抱歉,这听起来太简单了。我是Java的新手。

这是我用来检查hasNextLine()的一些简单代码。当我运行它时,我无法停止它。我以为,如果您不编写任何输入并按Enter,则可以避免while循环。

有人可以向我解释hasNextLine()在这种情况下如何工作吗?

import java.util.*;

public class StringRaw {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
        }
        System.out.print("YOU'VE GOT THROUGH");
    }
}

最佳答案

从System.in读取时,默认情况下是从键盘读取的,并且这是一个无限的输入流……它的行数与用户关心的一样。我认为发送EOF的控制序列可能会起作用,例如CTL-Z(或者是CTL-D?)。

查看我的上等ASCII图表... CTL-C是ETX,CTL-D是EOT;这些都应该可以终止文本流。 CTL-Z是一个不起作用的SUB(但它可能会起作用,因为历史上控件是高度主观的解释)。

关于java - 为什么hasNextLine()永远不会结束?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5653338/

10-11 14:32