程序进入无限循环

Ale*_*ian 1 java java.util.scanner

该程序在循环中进入无限循环.拜托,有人可以告诉我为什么吗?

import java.util.Scanner;
public class program {
    public static void main(String[] pars) {
        System.out.println("Insert something.");
        Scanner read = new Scanner(System.in);
        String s = "";
        while(read.hasNext()) {
            System.out.println(read.next());
        }
        System.out.println("End of program");
    }
}
Run Code Online (Sandbox Code Playgroud)

man*_*uti 5

阅读Javadoc Scanner#hasNext():

如果此扫描器的输入中有另一个标记,则返回true.在等待输入扫描时,此方法可能会阻塞.扫描仪不会超过任何输入.

因此while,每次等待来自用户的输入时,循环将始终在您的情况下执行.由于Scanner链接到System.in,输入流将始终阻塞,直到用户输入字符串并hasNext()始终返回true,除非用户发出文件结束信号(例如通过Windows上的Ctrl+ z组合).Scanner#hasNext()从已知输入大小的文件读取并且文件末尾标记流的结尾时更方便.

结束循环的一种方法是在输入上添加一个条件:

while (read.hasNext()) {
    s = read.next();
    if(s.equals("quit")) {
       break;
    }
    System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)

PS:命名以大写字母开头的类更常规.