Java:为什么这段代码不起作用?无限循环?

标签 java console infinite-loop program-flow

因此,您可能会从我的尝试中看出,我正在尝试编写一个程序,让用户有 5 秒的时间输入一些文本行,然后扫描仪将计算有多少行被输入。我刚刚开始学习 Java 作为我的第二语言,所以请尝试尽可能简单地解释一切:)

关于为什么它不起作用,我有两种理论。第一个是nextLine()将返回整行,无论它是否为空,而不是NL等于“”,它实际上等于整行(即“”)。我的第二个理论是,我不知道我在做什么,程序流程到处都是。无论如何,这是我的代码:

class OrigClass{
    public static void main(String args[]){
        Scanner ScanObj = new Scanner(System.in);
        int Count = 0;
        String NL = ScanObj.nextLine();
        try{
            Thread.sleep(5000);}
        catch (InterruptedException e){
            e.printStackTrace();
        }
        while (!NL.equals("")){
            Count++;
            NL = ScanObj.nextLine();
        }
        System.out.print("You Entered " + Count + " Lines.");
        ScanObj.close();
    }
}

哦,我忘了提到 hasNext() 是我最初尝试的:

       import java.util.Scanner;

    class OrigClass{
public static void main(String args[]){
    Scanner ScanObj = new Scanner(System.in);
    int Count = 0;
    try{
    Thread.sleep(5000);}
    catch (InterruptedException e){
        e.printStackTrace();
    }
    while (ScanObj.hasNext() == true){
    Count++;
    ScanObj.nextLine();
    }
    System.out.print("You Entered " + Count + " Lines.");
    ScanObj.close();
}
    }

最佳答案

从表面上看,这段代码应该可以工作。我唯一的猜测是您正在手动输入输入,并且忘记用 CTRL+D 表示输入结束。 。但是,这样做,您将得到 NoSuchElementException如果您不使用ScanObj.hasNext() .

您还可以使用输入重定向来运行代码。 java OrigClass < data

更好的方法如下:

import java.util.Scanner;

public class Sc {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int count = 0;
        String nl; // = scan.nextLine();
        //while (!NL.equals(""))
        while(scan.hasNext())
        {
          count++;
          nl = scan.nextLine();
        }
        System.out.println("Done!  Count: " + count);
        scan.close();
    }
}

这里的区别是我们保存第一个 nextLine()直到我们进入 while 循环。这将准确计算输入中有多少行。

只是不要忘记用 CTRL+D 来表示输入结束.

关于Java:为什么这段代码不起作用?无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577908/

相关文章:

Javascript页面自动上下滚动

xcode - Swift 无限淡入淡出循环

java - 如何使用java POI从Excel表中读取数据插入数据库?

Java 将敏感的 'key' 存储为 String 或 char[]?

java - 将 Spring Roo 应用程序转换为 JBoss 6 应用程序

c++ - 在 Win32 应用程序上工作,希望输出到 Win32 窗口和控制台窗口

java - 概念证明 : how I can create a generic comparator method with reflection?

console - 如何清除 Rebol 控制台?

wcf - 在控制台中托管简单的 Wcf 服务

Python:如何从 __getattribute__ 方法访问属性