Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果第一个值不存在,如何使用分割的第二个和第三个值?_Java_Arrays_Split - Fatal编程技术网

Java 如果第一个值不存在,如何使用分割的第二个和第三个值?

Java 如果第一个值不存在,如何使用分割的第二个和第三个值?,java,arrays,split,Java,Arrays,Split,我正在尝试创建一个java类,以从HH:mm:ss持续时间中获得秒数,用于一些数学计算,它是有效的。唯一的问题是,如果用户只有分和秒,他们不会考虑输入,例如,0:3:42,而是输入3:42 代码如下: import java.util.Scanner; 公共班机{ 公共静态void main(字符串[]args){ 扫描仪扫描=新扫描仪(System.in); 整数秒=0; System.out.println(“在HH:mm:ss中输入要转换为秒的时间:”; String standardTi

我正在尝试创建一个java类,以从HH:mm:ss持续时间中获得秒数,用于一些数学计算,它是有效的。唯一的问题是,如果用户只有分和秒,他们不会考虑输入,例如,0:3:42,而是输入3:42

代码如下:

import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
整数秒=0;
System.out.println(“在HH:mm:ss中输入要转换为秒的时间:”;
String standardTime=scan.nextLine();
scan.close();
String[]split=standardTime.split(“:”){
秒+=整数.parseInt(拆分[0])*3600;
秒+=整数.parseInt(拆分[1])*60;
秒+=整数.parseInt(拆分[2]);
}
系统输出打印项次(秒);
}
}

如果格式是mm:ss而不是HH:mm:ss,我希望能够使用[1]和[2]而不是[0]和[1]。

如果数组太小,可以从数组的末尾而不是数组的开头引用索引,并假设值为
0

seconds+=split.length==3?整数.parseInt(split[0])*3600:0;
秒+=Integer.parseInt(split[split.length-2])*60;
秒+=Integer.parseInt(split[split.length-1]);

如果输入是mm:ss,并且您使用“:”作为分隔符调用split,它将创建一个包含两个值的数组——“mm”和“ss”

因此,要从该数组中读取,应该使用索引0和1。无法从具有两个值的数组中获取索引2(不获取)


相反,您可以在创建后检查该数组的大小。如果它是2,则您知道您只有分钟和秒,并执行您想要的计算。

您可以根据标准时间长度分割指令状态以HH:mm:ss输入时间。。。如果输入不是那种格式,这是错误吗?我建议不要这样做。保持简单,如果他们搞砸了,抛出一个带有解释性消息的输入异常。换句话说,如果他们没有想到,就向他们解释。@AndrewS这不是一个错误,但如果时间没有小时,用户不知道在开始时输入0:则计算错误,因为这很奇怪,给用户带来了不便。@WJS我宁愿为用户提供简单的体验,也不愿为自己提供简单的体验。