【问题标题】:java scanner while loop wont stopjava扫描仪while循环不会停止
【发布时间】:2013-10-17 21:10:40
【问题描述】:

我是 CS 一年级的学生,我正在做一项作业,但我遇到了这个不会停止的 while 循环...

import java.io.*;
import java.util.Scanner;

class Ass1{
public static void main(String[] args){
    int i=0;

    try{
        File myfile = new File ("./ages.txt");
        Scanner scanner = new Scanner(myfile);

        while(scanner.hasNext()){
            i++;
        }
        System.out.println("ages.txt contains " + i + " lines");
        scanner.close();
    }catch(IOException e){}
}
}

ages.txt 文件如下所示(它们应该都在单独的行中,但不知何故,我只能在一行中显示它们:()

200 201 202 203 205 205 207 208 210 213 214 217 218 219 219 221 225 226 227 227 231 232 238 238 240 309 313 314

我正在尝试从文本文件中读取所有行,并在最后打印它包含的行数。

提前感谢您的帮助。

【问题讨论】:

  • 你永远不会前进光标。你会想使用hasNextLine()

标签: java while-loop java.util.scanner


【解决方案1】:

您需要致电scanner.next(); 推进您的扫描仪

如果要计算行数,最好分别使用scanner.hasNextLine()scanner.nextLine()

按照您编写的方式,scanner.hastNext() 将始终评估为 true,因为扫描仪实际上从未离开其初始位置,因此将始终存在 hasNext()

【讨论】:

  • 感谢您的快速回复。但是我将如何添加scanner.next(); ?
  • NP,祝你学习顺利。您可以通过键入它来添加它:p。想想你想在你的扫描仪指向的地方前进。提示:想想你在哪里数线。
  • @redFIVE +1 表示不要用勺子喂 OP
【解决方案2】:

那是因为你没有在 while 循环中调用 nextInt() 方法,这意味着 Scanner 永远不会前进到下一个标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2012-06-09
    相关资源
    最近更新 更多