0

そのため、乱数を生成し、ユーザーに数値の入力を求めるプログラムを作成する必要があります。また、ユーザーが間違った番号を入力すると、再試行する必要があります。これは私のコードです。

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!");

    }

私の問題は、ユーザーが間違って推測した後、2回目に正しい答えを入力したにもかかわらず、ループして「間違っていると推測しました」と表示されることです。

乱数が 4 だとします。3 を入力すると、間違っていると表示され、もう一度やり直すように求められます。ここで 4 を入力しても、まだ間違っていると表示されます。

編集:私のエラーが見つかりました。私は書かなければならなかった

number = Integer.parseInt(answer)

while ループ内。いいえ

int number = Integer.parseIng(answer) 

それは私が望まない新しい変数を作るからです。既存のものを変更したいだけです。

4

2 に答える 2

3

次の 2 行をループに入れる必要があります。

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

そうしないと、ユーザーに 2 番目の数値を入力するように求めることなく、最初の推測の無限回を乱数と比較することになります。

于 2013-08-31T16:59:46.707 に答える
0

ユーザーが推測した数値を更新するのではなく、同じ数値と比較するだけです。あなたがする必要があります:

int number = Integer.parseInt(answer);

while ループで。

また、このコードにはコンパイル エラーがあると思います: 閉じ } がなく (コピー/貼り付けで省略されている可能性があります)、変数 answer が宣言されていません。

編集:申し訳ありませんが、私の前に答えが表示されませんでした(Eclipseでコードを再現しようとしていました)が、とにかくそのコードは間違っていませんが、常に最初の推測をユーザーに尋ねるので奇妙です:P

于 2013-08-31T17:48:04.740 に答える