1

end や -1 などのコマンドを入力してループを終了できるようにできるかどうか疑問に思っていました。私が今持っているのは

while ( gradeCounter <= 10 ) // loop 10 times

終了するまで無限にループさせる方法を知りたいです。

4

3 に答える 3

2

while ループとそれを中断する条件を作成するだけです

while(true){
      String inputString = //Get user input here       

      if(inputString.equals("Your Termination Text"))
           break;

    }

コンソール入力を取得する方法を知りたい場合は、 Java の 1 つのメソッドを次に示します。 System.console() から入力を取得する方法

以下のコメントごとに編集

double grades = 0;
int entries = 0;
while(true){
      String inputString = //Get user input here       
 
      if(inputString.equals("Your Termination Text"))
           break;
      else{
        grades += Double.parseDouble(inputString);
        entries++;
      }
 }
 double averageGrade = grades / entries;

これは、数字ではなく、終了テキストでもないテキストを考慮していないことに注意してください。質問からは、低レベルの CIS クラスのように聞こえますが、これは問題にはならないと思います。ただし、そうである場合は、try catch とさらに入力検証を行う方法を学ぶ必要があります。

于 2013-10-01T19:48:06.777 に答える
1

While(true) {}無限ループを作成します。ループ内のbreakコマンドがループから抜け出します。中断する必要があるかどうかを判断するには、ループ内で発生するイベントの種類を検出する必要があります。

あなたが大規模に何をしているのかはわかりませんが、無限にループせず、処理能力を吸い上げるスレッドを使用する方が良いかもしれません。

于 2013-10-01T19:50:14.363 に答える
1

はい、可能です。ある種の入力を処理できる別のスレッドがあることを確認してください...

public class MyBreakableInfiniteLoop

    public static void main(String[] args) {

        MyRunnable r = new MyRunnable();
        new Thread(r).start();

        System.out.println("Press Enter to stop thread");
        new Scanner(System.in).readLine();
        r.stop = true;

    }

    public static class MyRunnable extends Runnable {
       public volatile boolean stop = false;
       public void run() { 
           while(!stop) { 
              //do nothing, preferably in a meaningful way 
           } 
       }
    }


}

kill -9(また、 「無限ループを破る入力」としてカウントしていませんでした…)

于 2013-10-01T20:00:40.987 に答える