条件として Scanner メソッド "hasNext" を使用して Java の while ループから抜け出すにはどうすればよいでしょうか? 質問する

条件として Scanner メソッド

問題が発生しました。以下は、ユーザーに入力を求め、ユーザーが入力した単語を 1 語ずつ出力するコードです。

問題は、プログラムが決して終了しないことです。私の限られた理解では、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.
   }
}

ベストアンサー1

新しい文字列を取得し続けて、空でない場合はループを続行します。終了文字列のループにコントロールを挿入するだけです。

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

ループ内で文字列を宣言し、文字列が「exit」の場合はループ本体で操作を実行しない場合は、次のようにします。

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

おすすめ記事