为什么不输入直接按回车会出现错误

不知道怎么改才能按回车直接输出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