做题的时候遇到一个问题,要求是先输入一个n,
然后接下来要输入n行字符串。例如要输入一下数据
3
1 2 3
1 1 3
2 3 4
按理来说很简单,就nextInt()获取n后,用循环输入nextLine()就可以了,
但奇怪的是for循环如果条件写成(int i=0;i<n;++i)后,会少一行。
并且最后一个还没输入默认就是null了。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n);
String[] data = new String[5];
for(int i =0; i< n;i++){
data[i] = sc.nextLine();
}
for(int i =0; i< n;i++){
System.out.println(data[i]);
}
出错原因: int n = sc.nextInt()和sc.nextLine().这两种函数
消息处理机制不同,当nextLine()读取到换行就会结束,所以相当于第一次字符串输入还没有开始就结束了。
解决办法1:
都用nextLine()这样的函数,然后把第一行的字符串转换为int类型即可
方法2:用sc1,sc2这种。
补充:分割空格隔开的字符串:split("\s+")比split("" )更好。可以判断多个连续空格。