Scanner中的next()与nextLine()比较

今天做题的时候,发现了一种现象:

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()方法就不会出现这种现象,因为根本读不进去。

参考:https://www.cnblogs.com/ihaveastory/p/5931278.html

原创文章 42 获赞 32 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39671159/article/details/83758607
今日推荐