2017-10-15 15 views
0

これは以前に尋ねられたことは分かっていますが、何がうまくいかないのか分かりません。Java乱数ゲームを推測するダイアログボックス

"1から1000の間の乱数を生成するプログラムを作成し、その数を推測するようにユーザーに依頼します。ユーザーの推測値が乱数よりも高い場合は、プログラムが表示されます「あまりにも高すぎる、もう一度やり直してください」ユーザーの推測値が乱数よりも低い場合、プログラムは「あまりにも低い、再試行する」と表示する必要があります。 入力と出力は、ダイアログボックスとメッセージボックスで行う必要があります。

このメッセージは、ユーザーが入力したメッセージの数に基づいています。

私は一週間中これを読んで仕事をしており、これは私の2番目の化身です。私は私の頭がすべての読書から回っているところにいる。私は、ダイアログボックスに数字を入力してから何も入力しないようにします。ループを続けるために私は何が欠けていますか?何や理由を説明してください。探してくれてありがとう。

import java.util.Scanner;  // Needed for the Scanner class. 
import java.util.Random;   // Needed for the Random class. 
import javax.swing.JOptionPane; // Needed for JOptionPane. 

/** 
This program generates a random number guessing game. 
*/ 

public class GuessingNumbersGame 
{ 
    public static void main(String[] args) 
    { 
// Create an object and assign a whole random number 
// from 1 to 1000 to it. 
     int rnumber;` 
     Random randomNumbers = new Random(); 
     rnumber = randomNumbers.nextInt(1000) + 1; 

// Ask the user to guess the random number. 
     String answer; 
     int guess; 
     answer = JOptionPane.showInputDialog("Enter a whole " + 
      "number between 1 and 1000."); 
     guess = Integer.parseInt(answer); 
     int guesses; 
     guesses = 0;               

// Create a loop of user guesses versus the random number 
// until the user answers correctly and keep track of the 
// number of times the user guesses. 
     while (guess != rnumber); 
     {         
      if (guess > rnumber) 
      { 
       JOptionPane.showMessageDialog(null,"Too high, try again."); 
       guess = Integer.parseInt(answer); 
       guesses++; 
      }    
      if (guess < rnumber) 
      {       
       JOptionPane.showMessageDialog(null,"Too low, try again."); 
       guesses++; 
      } 
     }  
     while (guess == rnumber) 
     {     
      guesses++; 
      JOptionPane.showMessageDialog(null,"Congratulations! The correct " + 
       "number is " + rnumber + ",and you had" + guesses + "guesses."); 

     } 

    System.exit(0); 
    } 
} 
+3

人が試して読んでもらいたい場合は、コードを正しくインデントします。 – khelwood

答えて

0

まず、それは一度だけ実行されるように、if(guess == rnumber) {while (guess == rnumber) {を変更します。
あなたの質問の答えは、推測を設定して何かに答える必要があります。
コンソールでこれを行うことをお勧めします。これは、回答をjava.util.Scanner.nextLine();に設定し、同じことを推測することです。 JOptionPanesではそれほど簡単ではありません。

0

プログラムが正しく構築されていません。あなたが書くように求められた単純なアルゴリズムの実装には、重要な問題はほとんどありません。 (ここではいくつかの擬似コードなど)をこのように製剤化することができます。

begin 

guess <- 0 
guesses <- 0 
randnum <- new random number [1,1000] 
do 
    guess <- ask user input 
    guesses++ 
    if guess > randnum 
     show "Too high" 
    if guess < randnum 
     show "Too low" 
while guess != randnum 

congrats // guess = randnum 
show number of guesses 

end 

あなたのコードは、このようにしていません。 if文、条件、ループを確認してください。