问题描述
- 为什么不输入直接按回车会出现错误
-
不知道怎么改才能按回车直接输出0
还得按一次空格再回车才不出现错误 求教怎么修改import java.util.Scanner;
public class Length {
public static void main(String[]args){
Scanner in= new Scanner(System.in);String[]num =null; num= in.nextLine().split(" "); int[]number = new int[num.length]; for(int i= 0;i<number.length;i++){ number[i]= Integer.valueOf(num[i]); } System.out.println(number.length); }
}
解决方案
在转化int之前加个判断
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String[] num = null;
num = in.nextLine().split(" ");
if (num[0].equals("")) {
System.out.println("#Total:0");
} else {
int[] number = new int[num.length];
for(int i= 0;i<number.length;i++){
number[i]= Integer.valueOf(num[i]);
}
System.out.println("#Total:" + number.length);
}
}
}
解决方案二:
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] num = null;
num = in.nextLine().split(" ");
int[] number = new int[num.length];
boolean flag = false ;
for (int i = 0; i < number.length; i++) {
try {
number[i] = Integer.valueOf(num[i]);
} catch (Exception e) {
System.out.println("0");
flag = true;
}
}
if(!flag){
System.out.println(number.length);
}
}
}
解决方案三:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] num = null;
num = in.nextLine().split(" ", -1);
int[] number;
if (num.length ==1 && "".equals(num[0])) {
number = new int[0];
} else {
number = new int[num.length];
for (int i = 0; i < number.length; i++) {
number[i] = Integer.valueOf(num[i]);
}
}
System.out.println(number.length);
}
就是这样了
解决方案四:
num= in.nextLine().split(" ");直接按回车,会出现空串。""转为int失败,所以加个强制转换异常处理就行。或者,在进for循环之前,加个判断,判断第一个num[0]是否是"",如果是,执行给number = new int[0];即int[] int[] number = new int[num.length];改成int[]number = num[0].equals("")?new int[0]:new int[num.length];这能解决提的直接按回车问题,但是不能解决输入字母问题。
解决方案五:
你这个程序还是有问题的,你输入 空格+1+空格就会报错 或者 空格+1+空格+空格+空格,输出的是3