今天做题的时候,发现了一种现象:
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个人名,怎么就把我一个人给吃掉了,这哪能行呢?!
于是,小编赶快查了一下资料。
结论:
- next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
- nextLine()扫描到一行内容并作为一个字符串而被获取到。
出现上面的原因啊,说来也简单,就是输完数字后,敲得那个回车,nextLine()方法直接将它当成一行读了,真是令人窒息,结果就占了数组的一个单位,导致最后一个人名存不进去了,也就出现了人名被吃掉了的现象。而用next()方法就不会出现这种现象,因为根本读不进去。