0

私は現在、乱数ゲームに基づく最初の Java コースと割り当てを完了しています。if greater と less のステートメントで問題が発生しています。

一般的なコメントをいただければ幸いです。

「乱数」を入力しようとしている理由は、テスト目的のためです。割り当てにはオブジェクト指向プログラミングが伴うためget()、メソッドも組み込む必要があるため、複数のクラスを使用する必要がありますset()

どんなアドバイスでも大歓迎です

私が抱えている問題は、乱数が範囲内であることを確認する最後のifステートメントが、範囲外であるという出力を常に取得していることです。


 package randomnumbergame;

 /*
  * @author Matthew O
  */

import java.util.Scanner;
public class Main {


public static void main(String[] args)
{


int numGuesses = 3;
int rangeMin = 1;
int rangeMax = 10;
int randomNum = 0;

Scanner scan = new Scanner (System.in);


System.out.println("Welcome to the random number game!");
System.out.println("The object of this game is to correctly "
+"guess a number between a set range within a certain ammount of guesses.");
System.out.println("\nThe default range is " + rangeMin + " - " + rangeMax); 
System.out.println("Would you like to change this?");                          
System.out.println("Please enter y for yes or n for no and press enter.");

String range = scan.nextLine();           
char changeRange = range.charAt(0);    
if (! (changeRange == 'Y' || changeRange == 'y'|| changeRange == 'n' || changeRange == 'N'))  
    {
    System.out.println("Error: invalid input entered for the interstate question");   
    System.exit(0);                                                          
    }                                                                           

if (changeRange == 'Y' || changeRange == 'y')       
    {
    System.out.println ("\nPlease enter the new numerical minimum value for the range");      
    int newRangeMin = scan.nextInt();                                              
    rangeMin = newRangeMin;                                  
    System.out.println ("\nPlease enter the new maximum numerical value for the range");       
    int newRangeMax = scan.nextInt();                                               
    rangeMax = newRangeMax;         
    }

{
System.out.println("\nThe default number of guesses is " + numGuesses);         
System.out.println("Would you like to change this?");                           
System.out.println("\nPlease enter y for yes or n for no and press enter.");    

String guesses = scan.next();                                                  
char changeGuesses = guesses.charAt(0);                                         
if (! (changeGuesses == 'Y' || changeGuesses == 'y' || changeGuesses == 'n' || changeGuesses 
== 'N'))                           

    {
System.out.println("Error: invalid input entered for the interstate question");           
System.exit(0);
    }

if (changeGuesses == 'Y' || changeGuesses == 'y')
    {
System.out.println("\nPlease enter the new number of permitted guesses");       
int newGuesses = scan.nextInt();                                               
numGuesses = newGuesses;                                                       
    }

    {
System.out.println ("\n\n\n\n\n\n\n\n\n");                                     
System.out.println("Welcome to the random number game!\n");                     
System.out.println("You have chosen a range of " + rangeMin + " to " + rangeMax);
System.out.println("You have chosen to have " + numGuesses + " Guesses");       
    }
}

{
System.out.println("\nPlease press y to input the random number or n" + 
" to let the number be automatically generated");           
String random = scan.next();                                                    
char changeRandom = random.charAt(0);                                          
if (! (changeRandom == 'Y' || changeRandom == 'y' || changeRandom == 'n' || 
changeRandom == 'N'))                            
    {
    System.out.println("Error: invalid input entered for the interstate question");     
    System.exit(0);
    }

   if (changeRandom == 'Y' || changeRandom == 'y')  
    {
    System.out.println("\nPlease enter the new 'random' number between "
    + rangeMin + " and " + rangeMax);                           
    int inputRandom = scan.nextInt();                                     
    randomNum = inputRandom;                                             
    System.out.println("\nThe 'random' number chosen for the game is " + randomNum);          
    }

if (randomNum < rangeMin);    
    {
    System.out.println("Random number is out of range!");     
    }

    }


 }

}
4

3 に答える 3

4

問題のステートメント;の最後に不要なものがあるため、評価されても結果はありません。if

if (randomNum < rangeMin); 
            {
                System.out.println("Random number is out of range!");           
            }

がどのようにif評価されても、メッセージは常に出力されます。

上記を次のように変更します。

 if (randomNum < rangeMin)
                {
                    System.out.println("Random number is out of range!");           
                }
于 2012-06-22T16:04:53.897 に答える
3
if (randomNum < rangeMin);
{
    System.out.println("Random number is out of range!");
}

問題は;最初の行の(セミコロン)にあります。Javaは、それがそのif条件の終わりであると見なし、毎回エラーメッセージを出力します。次に、ステートメントは次のように述べています。

「(randomNum <rangeMin)の場合、何もしません。次に、「乱数が範囲外です!」と出力します。。」

于 2012-06-22T16:05:45.290 に答える
1

;ifの後に記号を削除するだけです。

if (randomNum < rangeMin);
{
System.out.println("Random number is out of range!");
}
于 2012-06-22T16:05:22.443 に答える