end や -1 などのコマンドを入力してループを終了できるようにできるかどうか疑問に思っていました。私が今持っているのは
while ( gradeCounter <= 10 ) // loop 10 times
終了するまで無限にループさせる方法を知りたいです。
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 とさらに入力検証を行う方法を学ぶ必要があります。
While(true) {}
無限ループを作成します。ループ内のbreak
コマンドがループから抜け出します。中断する必要があるかどうかを判断するには、ループ内で発生するイベントの種類を検出する必要があります。
あなたが大規模に何をしているのかはわかりませんが、無限にループせず、処理能力を吸い上げるスレッドを使用する方が良いかもしれません。
はい、可能です。ある種の入力を処理できる別のスレッドがあることを確認してください...
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
(また、 「無限ループを破る入力」としてカウントしていませんでした…)