java - 如何以 Scanner 方法 "hasNext"作为条件退出 java 中的 while 循环?

标签 java loops while-loop infinite-loop

我遇到了一个问题。下面是我的代码,它要求用户输入并一次打印出用户输入的内容。

问题是程序永远不会结束,从我有限的理解来看,它似乎陷入了 while 循环中。有人可以帮我一点吗?

import java.util.Scanner;

public class Test{
   public static void main(String args[]){
      System.out.print("Enter your sentence: ");
      Scanner sc = new Scanner (System.in);
     
      while (sc.hasNext() == true ) {
        String s1 = sc.next();
        System.out.println(s1);
      }

      System.out.println("The loop has been ended"); // This somehow never get printed.
   }
}

最佳答案

你不断地获取新的字符串,如果它不为空则继续循环。只需在循环中插入一个控件即可作为退出字符串。

while(!s1.equals("exit") && sc.hasNext()) {
    // operate
}

如果你想在循环内部声明字符串,并且如果字符串是“exit”,则不执行循环体中的操作:

while(sc.hasNext()) {
    String s1 = sc.next();
    if(s1.equals("exit")) {
        break;
    }
    //operate
}

关于java - 如何以 Scanner 方法 "hasNext"作为条件退出 java 中的 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864148/

相关文章:

java - 如何为从配置单元 jdbc 查询启动的 mr 作业指定额外的 jar?

loops - 是否可以使用while循环制作标签?

iOS Objective-C 等待异步进程

python - While 循环并在 bool 值变为 false 时中断

java - myFile.isFile() 或 myFile.isDirectory() 是否有可能的第三种类型的功能?

java - CardView在RecyclerView中突然出现空白

java - jackson JSON + Java 泛型

C 编程循环行和列

c++ - 大型 JPEG/PNG 图像序列循环

java - 如何在while循环中使用String方法