while判斷如何停止無限循環?

在判斷時,正確,電腦會無限顯示,如何只顯示一次,但錯誤時,這程式就是出現一次,為何會這樣,如何修改?

完整程式:

import java.io.*;

public class answer01

{

public static void main(String args[])

{

BufferedReader myReader=new BufferedReader(new InputStreamReader(System.in));

try

{

System.out.println(\"猜數字遊戲Start!!\");

System.out.println(\"電腦已經選定了一個數字(0~9)\");

int intAnswer=5;

System.out.println(\"猜猜看它選的是哪個數字\");

System.out.println(\"你選的數字是:\");

String myString=myReader.readLine();

int intNumber=Integer.parseInt(myString);

//判斷是否猜中

while(intNumber==intAnswer)

{

System.out.println(\"正確!太厲害了吧!\");

}

if(intNumber!=intAnswer)

{

System.out.println(\"不正確\");

}

}catch(IOException e)

{

System.out.println(\"發生IO錯誤\");

}

catch(NumberFormatException ne)

{

System.out.println(\"輸入的數值不正確!\");

}

}

}

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    程式的處理流程和邏輯要先釐清

    以下幾點是有點不足的

    1. 使用者的輸入可能會錯, 如果錯了就要重新輸入, 所以輸入部分必須放在迴圈裡

    2. 錯誤發生時才必須繼續猜下去, 所以 while 的條件應該是猜錯才繼續而非猜對繼續

    這樣歸納下來不需要用到 if 喔

    上面的程式改變一下順序會比較簡潔有力

    (寫法1: while)

    System.out.println("猜猜看它選的是哪個數字");

    System.out.println("你選的數字是:");

    String myString=myReader.readLine();

    int intNumber=Integer.parseInt(myString);

    //判斷是否猜中

    while(intNumber!=intAnswer) {

    System.out.println("不正確");

    System.out.println("猜猜看它選的是哪個數字");

    System.out.println("你選的數字是:");

    String myString=myReader.readLine();

    intNumber=Integer.parseInt(myString);

    }

    System.out.println("正確!太厲害了吧!");

    (寫法2: do while)

    int intNumber;

    //判斷是否猜中

    do {

    System.out.println("猜猜看它選的是哪個數字");

    System.out.println("你選的數字是:");

    String myString = myReader.readLine();

    intNumber = Integer.parseInt(myString);

    if(intNumber!=intAnswer) System.out.println("不正確");

    } while(intNumber!=intAnswer)

    System.out.println("正確!太厲害了吧!");

    由於這一題是先輸入後判斷的狀況類型

    所以用 do while 比較節省程式碼

    如果是先判斷後輸入的狀況才比較適合採用 while

  • 1 decade ago

    當猜到正確的數字時~程式會在

    while(intNumber==intAnswer)

    {

    System.out.println("正確!太厲害了吧!");

    }

    這裡一直跑~因為條件一直成立

    所以

    while(intNumber==intAnswer)改成if(intNumber==intAnswer)

    if(intNumber!=intAnswer)改成else

    或是改成

    while(intNumber==intAnswer)

    {

    System.out.println("正確!太厲害了吧!");

    break;//跳開這個回圈

    }

    Source(s): me
Still have questions? Get your answers by asking now.