簡體   English   中英

我一直在進行無限循環

[英]I keep getting an infinite do while loop

我寫了一個可以捕獲用戶輸入錯誤的程序。

當我嘗試讓我的程序執行“do over”(使用do while循環)時會遇到錯誤。 程序(而不是通過掃描程序用戶輸入重新啟動)將一遍又一遍地從異常catch塊打印System.out.println行。

下面是我的代碼,我真的希望有人可以幫助我。

    int x = 0;
    int y = 0;
    int Temp = 0;
    int Rest = 0 ;
    int Works = 1;

    Scanner s = new Scanner(System.in);

    do{
    try{

    System.out.println("Bitte geben sie zwei Nummern ein für den ggT.");
    System.out.print("Die erste Nummer: ");
    x = s.nextInt();

    System.out.print("Die zweite Nummer: ");
    y = s.nextInt();

    if (x < y){
        Temp = x;
        x   = y;
        y = Temp;
        }System.out.println("Berechnung des ggT von " +x +" und " +y +".");

        do{
        System.out.println("Rechne " +x +" mod " +y +": ");
        Rest = x % y;
        if (Rest != 0){
            x = y;
            y = Rest;
        }
        }while (Rest !=0);
    System.out.println("Der größte gemeinsame Teiler lautet: " + y);    
    Works=2;    
    }
    catch(Exception e){
            System.out.println("Sie dürfen nicht durch Null (0) teilen.");
            System.out.println("Sie dürfen keine Dezimalzahlen benutzen.");
            System.out.println("Sie dürfen keine Zeichen benutzen.");
            System.out.println("Versuchen wir es noch einmal :)");
        }
}while(Works==1);
}

它會打印出來

Bitte geben sie zwei Nummern ein für den ggT.
Die erste Nummer: 
Sie dürfen nicht durch Null (0) teilen.
Sie dürfen keine Dezimalzahlen benutzen.
Sie dürfen keine Zeichen benutzen.
Versuchen wir es noch einmal :)

一遍又一遍。 而不是等待用戶輸入。

我希望德國人和我的代碼不要放棄。

嘗試通過在catch塊中的Scanner上調用nextLine()方法將Scanner推進到下一行。 這應該清除輸入。

catch(Exception e){
        System.out.println("Sie dürfen nicht durch Null (0) teilen.");
        System.out.println("Sie dürfen keine Dezimalzahlen benutzen.");
        System.out.println("Sie dürfen keine Zeichen benutzen.");
        System.out.println("Versuchen wir es noch einmal :)");
        s.nextLine();   // Advance Scanner to the next line
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM