【问题标题】:Why am I getting an infinite loop when I use Scanner.hasNext() in a while loop? [duplicate]为什么当我在 while 循环中使用 Scanner.hasNext() 时会出现无限循环? [复制]
【发布时间】:2016-07-31 21:04:44
【问题描述】:

我是 Java 新手。我正在尝试遍历文件并将每个字符串写入 ArrayList。为此,我的代码如下所示:

public static void main(String[]args)throws IOException
{
    File customerData = new File("accountData.txt");
    Scanner fileReader = new Scanner(customerData);
    ArrayList<String> stringArrList = new ArrayList<String>();

    String currentWord = "";
    System.out.println("About to enter while loop");    

    while(fileReader.hasNext());
    {
        currentWord = fileReader.next();
        stringArrList.add(currentWord);
    }
    System.out.println("We have exited the while loop");
}

但是,由于某种原因,此代码陷入了无限循环。即使我将打印语句作为 while 块的第一行,它也不会执行。

accountData.txt 文件的排列如下:

String String String String String
String String String String String
...

我已经通读一遍,并且经常看到这是问题,因为人们没有使用 Scanner.next() 来移动指针,但我相信我正在这样做。我不知道出了什么问题。

感谢您的帮助!

【问题讨论】:

    标签: java file-io while-loop java.util.scanner next


    【解决方案1】:

    这是一个问题,因为人们没有使用 Scanner.next() 来移动指针,但我相信我正在这样做

    您将使用Scanner.next(),但; 会终止循环体。去掉它。改变

    while(fileReader.hasNext());
    {
        currentWord = fileReader.next();
        stringArrList.add(currentWord);
    }
    

    while(fileReader.hasNext()) // <-- no semicolon
    {
        currentWord = fileReader.next();
        stringArrList.add(currentWord);
    }
    

    【讨论】:

    • 请投票关闭错误或选择数百个重复项之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2018-11-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多