2013-08-31 209 views
0

所以,我必須製作一個程序來生成一個隨機數,然後要求用戶輸入一個數字。如果用戶輸入了錯誤的號碼,他/她將不得不再次嘗試。這是我的代碼。while循環中的錯誤

import java.util.Random; 
import javax.swing.JOptionPane; 

public class Oblig4 { 
    public static void main (String[] args){ 

     Random rg = new Random(); 
     int randomNumber = rg.nextInt(100); 

     JOptionPane.showMessageDialog(null, "The program has generated a number," 
       + " You have to guess what number it is."); 

     String input = JOptionPane.showInputDialog("What is your first guess?"); 
     int number = Integer.parseInt(input); 

     while (number != randomNumber) { 
      JOptionPane.showMessageDialog(null, "You've guessed wrong"); 
      String answer = JOptionPane.showInputDialog("Try again"); 
     } 

     {JOptionPane.showMessageDialog(null,"Congratulations, you guessed right!"); 

    } 

我的問題是,用戶已經猜錯了以後,它只是循環,並說我猜錯了,即使我輸入正確的答案的第二次。

假設隨機數是4,如果我輸入3它說我錯了,並要求我再試一次。如果我現在輸入4,它仍然說我錯了。

編輯:發現我的錯誤。我必須寫

number = Integer.parseInt(answer) 

while循環內。 NOT

int number = Integer.parseIng(answer) 

因爲這會產生一個新的變量,我不想要。我只是想改變現有的。

+2

沒有描述你的問題,你不會得到太多的幫助。 –

+0

'答案'從哪裏來? – Makoto

回答

3

你必須把這兩條線在循環:用隨機數的第一個猜測

String input = JOptionPane.showInputDialog("What is your first guess?"); 
int number = Integer.parseInt(input); 

否則你是比較無限次而不要求用戶輸入第二個數字。

+0

我試過這個,但後來我得到「數字」沒有定義的錯誤,我需要創建一個局部變量。 – Zahand

0

您不更新用戶猜測的數字,只是比較相同。 您需要做的:

int number = Integer.parseInt(answer); 

在while循環中。

此外,我認爲這段代碼有編譯錯誤:它缺少關閉}(也許在複製/粘貼ommited)和變量的答案沒有宣佈。

編輯:對不起,我沒有看到我之前的答案(我試圖重現我的eclipse上的代碼),但無論如何,代碼沒有錯,但很奇怪,因爲它總是要求用戶的第一個猜測:P