一、发现问题
今天做题的时候,发现了一种现象:
public class KeTang3_1 {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
int w = s1.nextInt();
String [] ss = new String[w];
for(int i = 0; i < ss.length; i++){
ss[i] = s1.nextLine();
}
Arrays.sort(ss);
for(String x : ss){
System.out.println(x);
}
}
}
结果:
呀呵呵,我明明输进去7个人名,怎么就把我一个人给吃掉了,这哪能行呢?!
于是,小编赶快查了一下资料。
二、解决问题
出现上面的原因啊,说来也简单,就是输完数字后,敲得那个回车,nextInt()只处理了数字,而后面键盘输入的那个回车,被下一个nextLine()接收,所以导致最后占用了一个位置,最终结果就是最后一个人名没有输上。
三、总结
经过实验,得出以下结论:
- next(),nextInt(),nextDouble(),nextBigInteger(),nextLong(),nextShort(),nextByte(),nextBigDecimal(),nextBoolean(),nextFloat() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
- nextLine()扫描到一行内容并作为一个字符串而被获取到。