2011-01-26 18 views
0

私は魔法の8ボールのように動作するプログラムを書いています。それは質問をして、私が入れた20のうちランダムな応答を表示します。コーディングでエラーは表示されませんが、プログラムを実行するとランダムなレスポンスを出力する必要があるまで完全に動作します。これは宿題なので、私はそれを修正する人物を探しているわけではありませんが、これを正しく動作させる方法を正確に把握しようとしています。ありがとう、私は助けに感謝します。Javaの乱数ジェネレータ

import java.util.Scanner; 


public class MagicBall 
{ 

    public static void main(String[] args) 
    { 

     Scanner input = new Scanner(System.in); 
     System.out.println("Please type in a question: "); 
     double question = input.nextDouble(); 


     int number = (int)(Math.random() * 20); 

     if (number == 0) 
      System.out.println("As I see it, yes"); 

     if (number == 1) 
      System.out.println("It is certain"); 

     if (number == 2) 
      System.out.println("It is decidedly so"); 

     if (number == 3) 
      System.out.println("Most likely"); 

     if (number == 4) 
      System.out.println("Outlook good"); 

     if (number == 5) 
      System.out.println("Signs point to yes"); 

     if (number == 6) 
      System.out.println("Without a doubt"); 

     if (number == 7) 
      System.out.println("Yes"); 

     if (number == 8) 
      System.out.println("Yes – definitely"); 

     if (number == 9) 
      System.out.println("You may rely on it"); 

     if (number == 10) 
      System.out.println("Reply hazy, try again"); 

     if(number == 11) 
      System.out.println("Ask again later"); 

     if (number == 12) 
      System.out.println("Better not tell you now"); 

     if (number == 13) 
      System.out.println("Cannot predict now"); 

     if (number == 14) 
      System.out.println("Concentrate and ask again"); 

     if (number == 15) 
      System.out.println("Don't count on it"); 

     if (number == 16) 
      System.out.println("My reply is no"); 

     if (number == 17) 
      System.out.println("My sources say no"); 

     if (number == 18) 
      System.out.println("Outlook not so good"); 

     if (number == 19) 
      System.out.println("Very doubtful"); 
    } 
} 
+2

神はswitch文を発明した理由です。 – unholysampler

+9

...または配列の参照:-) – meriton

答えて

1

あなたのコードは私のために動作しますが、それは、二重(例えば123.456)の入力にあなたを強制的に参照してください。あなたは変更する必要があります。

double question = input.nextDouble(); 

へ:

String question = input.nextLine(); 

また、あなたはすべてのそれらのIFの代わりに、switchステートメントを使用することをお勧めします。

+0

ありがとうございます。私はそれをダブルの代わりにStringに変更しています。そして私はswitchステートメントを使用するつもりでしたが、これはクラスの最初の宿題であり、まだカバーされていないものは使用したくありません。 – Mary

6
double question = input.nextDouble(); 

あなたが質問が浮動小数点数になると思いますか?

+0

3.14159265358979? – Pete

+0

「非常に疑わしい」 – meriton

+0

ええ、なぜ私が二重を使用したのか分かりません。私はそれをStringに変更し、それはうまくいった。 – Mary

2

はApache Commonsのは、非常に有用である:

RandomUtils.nextInt(maxVal); 
関連する問題