【问题标题】:in.hasNextLine() never terminates in Javain.hasNextLine() 在 Java 中永远不会终止
【发布时间】:2014-05-29 23:52:47
【问题描述】:

所以我正在编写一个程序,它从文件中的数据填充部分填充的数组,我需要知道文件中的行数,这样我就可以在我的 for 循环中创建一个条件,所以没有界限异常。所以我创建了一个方法,上面写着:

public static int lineFinder(String[] names) throws FileNotFoundException
    {
        Scanner in = new Scanner(new File("prog6_1.txt"));
        int count = 0;

        while(in.hasNextLine())
        {
           count++;
        }
        return count;
         }

我的文件如下所示:

3459 凯特伊丽莎白布朗 4.00

5623 瑞秋杰西卡史密斯 3.45

9837 托马斯·罗伯特·多伊 3.73

1235 莱利·利格林 2.43

而且它永远不会终止,我不知道为什么,因为我在末尾多加了一行。有什么建议吗?

【问题讨论】:

    标签: java loops methods infinite


    【解决方案1】:

    hasNextLine() 方法不会将光标向前移动。你需要在循环中使用nextLine() 方法来做到这一点。

    【讨论】:

      【解决方案2】:

      hasNextLine() 只检查,但doesn't consume the line。您需要在循环内调用nextLine()

      【讨论】:

      • 谢谢你回答了我的问题!
      【解决方案3】:

      hasNextLine() 只是检查下一行是否可用,它不会获取下一行,因为您应该在验证下一行存在后使用 nextLine()。修改你的while循环如下:

       while(in.hasNextLine())
          {
            in.nextLine();
             count++;
          }
      

      【讨论】:

        【解决方案4】:

        hasNextLine() 不会使光标前进(即,它不会占用行)。您的代码应使用in.nextLine(),如下所示:

        public static int lineFinder(String[] names) throws FileNotFoundException
        {
            Scanner in = new Scanner(new File("prog6_1.txt"));
            int count = 0;
        
            while(in.hasNextLine())
            {
                in.nextLine();
                count++;
            }
            return count;
        

        【讨论】:

          猜你喜欢
          • 2014-05-13
          • 2021-10-08
          • 1970-01-01
          • 1970-01-01
          • 2015-04-21
          • 2013-09-09
          • 1970-01-01
          • 1970-01-01
          • 2016-06-03
          相关资源
          最近更新 更多