2012-09-17 261 views
1

對於java來說我是全新的,我正在編寫這個簡短的程序,你猜測1到10之間的數字。正確的數字以整數形式存儲。如果你猜測一個較低的數字,它應該說「正確的數字更高」,如果你猜測一個更高的數字應該說「正確的數字更低」。下面是我有:Java while while循環問題

import javax.swing.*; 

public class Oppg3 { 
    public static void main(String[] args) { 
     int number = 7; 
     int guessed = Integer.parseInt(JOptionPane.showInputDialog("Guess a number between 1 and 10")); 
     while(guessed>number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a lower number.")); 
     while(guessed<number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a higher number.")); 
     JOptionPane.showMessageDialog(null, guessed + " is correct!"); 

    } 

} 

所以,很顯然這不會工作,如果你進入一個較低的數字,它會跳轉到下一個原因,那將拿出是正確的,即使其更高。那麼,我該如何解決這個問題,以便它能檢查兩個語句?對不起,糟糕的解釋。謝謝。

+0

不知道,如果我知道了,你爲什麼使用一段時間看,不只是一個,如果這種條件 –

+2

愛的問題。他們通常在第一個2分鐘內得到很多答案=) – svz

+0

嘿,這個問題可能是愚蠢的,因爲他們得到。無論如何,非常感謝答覆,它現在正常工作,並使用如果在一個while while循環更有意義。 :) – Misoxeny

回答

3

最簡單的辦法是用if s到替換當前的田地,幷包含他們都在

while(guessed!=number) 
{ 
    if(guessed>number) //stuff 
    if(guessd<number) //otherstuff 
} 
0

嘗試使用這兩個語句圍繞一個while循環,if條款對他們的個人。

1

而不是兩個while循環,只要猜測的數字不等於正確的答案創建一個循環。在循環內部,創建if語句來檢查猜測的數字是高於還是低於正確的答案,並執行相應的操作。

0

試試這個:

While (ReadNumber != guessed) 
{ 
    //if Higher then ...show appropriate message 
    //if lower then ...show appropriate message 
    //ReadNumber = read Input again 
} 
0

這個替換您的最後一行。

if(guessed == number){ 
    JOptionPane.showMessageDialog(null, guessed + " is correct!"); 
} 

或者改變這一切,

bool correct = false; 
while(correct == false) 
{ 
    if(guessed == number) 
    { 
     enter code here 
     correct = true; 
    } 
    else if(guessed > number) 
    { 
    enter code here 
    } 
    //check for guessed < number 
} 
2

如果我在那裏你我會做到以下幾點:

  • 我會用一個do while循環。
  • 在方法體中,我會檢查用戶是否猜到數字。
  • 如果是,祝賀用戶和循環退出。
  • 否則,如果數量更高,我會相應地通知用戶並允許他再次嘗試。
  • 否則,我會告訴用戶號碼較低,並會讓他再試一次。

由於是,如果你的用戶給出了一些這是在第二循環應該告訴的號碼是正確的,無論這個值,這是不理想的行爲的用戶較大。

0

你必須使用循環,而用戶不會猜測正確的數字。在循環內部,如果數字更高或更低,則必須檢查

因此,該程序會是這個樣子:

while (the user don't guess the number){ 
// 
if (the guessed number is higher){...} 
if (the guessed number is lower){...} 
// 
} 
0

的邏輯是不正確。您希望用戶在每次錯誤時重新輸入一個號碼。這就是爲什麼你的循環看起來像while(guessed != number) { ... }。在內部,您需要接受輸入,驗證並輸出結果。

我不會把正確的代碼放在這裏,因爲最好自己爲你發現它。

0

如果猜測的數字不等於實際數字,則使用帶有條件的外部while循環。在while子句的正文中,您使用if聲明將案例分爲上下兩部分。整個代碼看起來是這樣的:

import javax.swing.*; 

public class Oppg3 { 
    public static void main(String[] args) { 
     int number = 7; 
     int guessed = Integer.parseInt(JOptionPane.showInputDialog("Guess a number between 1 and 10")); 
     while(guessed!=number) { 
      if(guessed>number) guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a lower number.")); 
      else guessed = Integer.parseInt(JOptionPane.showInputDialog(guessed + " is wrong. Try a higher number.")); 
     } 
     JOptionPane.showMessageDialog(null, guessed + " is correct!"); 

    } 

}