2011-07-23 14 views
1
import java.util.Scanner; 
import java.util.Random; 

public class SlotMachine 
{ 
    public static void main(String []args) 
    { 
     Scanner input = new Scanner(System.in); 
     Random randomGen = new Random(); 

     int start = 10; 

     System.out.println("Welcome to the Slot machine!"); 
     System.out.println("You have "+ start); 
     System.out.println("Choose one of the following menu options:"); 
     //============================== 
     // MENU 
     //============================== 
     int menu = 2; 

     while (menu >= 1 && menu <= 2) 
     { 
     System.out.println("1) Play the slot machine."); 
     System.out.println("2) Cash out."); 
     menu = input.nextInt(); 

     if (menu == 1) 
     { 

      System.out.print("The slot machine shows: "); 

      //================================================ 
      //GENERATE A RANDOM NUMBER BTWEEN 0-10 INCLUSIVE 
      //================================================ 
      for(int i = 0; i < 3; i++) 
      { 

       int randomNum = randomGen.nextInt(10); 
       System.out.print(randomNum); 
      } 

      if (randomNum < 100) 
      { 
       System.out.println("Sorry you don't win anything!!"); 
      } 


      else if (randomNum >= 1 && randomNum < 1000) 
      { 

      } 

      //=========================================== 
      // KEEPING COUNT OF HOW MANY TIMES PLAYED 
      // ========================================== 
      int count = 0; // keeps count of how many times you play 
      int amountLeft = 0; 
      while (count <= menu) 
      { 
       count += (menu*0.25); 
       amountLeft = start - count; 
      } 

      System.out.println("You have" + amountLeft); 

     } 
     if (menu == 2) 
     { 
      System.out.println("Thank you for playing "); 
     } 

     if (menu < 1 || menu > 2) 
     { 
      System.out.println("invalid range of numbers.... PLEASE ENTER 1 OR 2!!!"); 
     } 
     break; 
     } 
    } 
} 

私はrandomNum cannot be resolvedというエラーがあります。私はこの変数を宣言して初期化したと思った。なぜ私にエラーを与え続けているのですか?私のプログラムでこのエラーが見つかりません

私の問題の2番目の部分はどのように私はこれを把握するのですか?このプログラムはスロットマシンです。ここでは、出力のサンプルです:

Welcome to the slot machine! 
You have $10.00. 
Choose one of the following menu options: 
1) Play the slot machine. 
2) Cash out. 

1 

The slot machine shows 046. 
Sorry you don't win anything. 

You have $9.75. 
Choose one of the following menu options: 
1) Play the slot machine. 
2) Cash out. 

1 

The slot machine shows 933. 
You win 50 cents! 

You have $10.00. 
Choose one of the following menu options: 
1) Play the slot machine. 
2) Cash out. 

は、どのように私は誰かが433または111または224のような勝利かどうかを判断するためにランダムに生成された番号が同じである2つの数値を決定するのですか?

答えて

4

私はあなたの質問の後半部分を理解していないが、最初のものは単純です:

//================================================ 
    //GENERATE A RANDOM NUMBER BTWEEN 0-10 INCLUSIVE 
    //================================================ 
    for(int i = 0; i < 3; i++) 
    { 

     int randomNum = randomGen.nextInt(10); 
     System.out.print(randomNum); 
    } 

    if (randomNum < 100) 

あなたがのためのスコープでrandomNumを宣言しました。

//================================================ 
    //GENERATE A RANDOM NUMBER BTWEEN 0-10 INCLUSIVE 
    //================================================ 

    int randonNum = 0; // declare the variable & initialize it 
    for(int i = 0; i < 3; i++) 
    { 
     randomNum = (randomNum * 10) + randomGen.nextInt(10); 
     System.out.print(randomNum); 
    } 

    if (randomNum < 100) 

UPDATE:私は、私も2番目の質問を考え出したと思うあなたはこれを行っている必要があります。乱数に少なくとも2つの等しい桁があるかどうかを判断する必要があります。ここでは、(私も:)いくつかの素晴らしい数学的な方法があります確信している)、それを行うことができます方法は次のとおりです。私はあなたが100〜999の数字を制限見るので、

int digitA = randomNum % 10; 
int digitB = (randomNum/10) % 10; 
int digitc = (randomNum/100) % 10; 

if(digitA == digitB || digitA == digitC || digitB == digitC) { 
    // matches 
} else { 
    // no match 
} 

はご注意は、私は3を仮定しますあなただけのためにこれを解決するのを手伝ってください、あなたはあなたの残りを把握する必要があります!私はあなたの宿題を解決したくありませんが、私はあなたに正しい方向を指し示したいと思います。

*私はyi_Hが提案内容を反映して答えを更新しました。*

+0

randomNumには、1桁だけではなく、整数を含める必要があります。 –

+0

あなたは正しいです。論理はすでに元のコードに欠陥があります。答えは、実際には数を別々に作成することです。クライカイ・カーンがどのように示唆したか(チェックは簡略化されていることを意味する)、あるいはあなたの答えに示唆したアプローチを使用する(これは私がもっと好きです。なぜなら私は等しい数字のチェックを好まないからです...しかし、私は問題を解決したくなかった*)。 –

+0

int digitA = randomNum%10; int digitB =(randomNum/10)%10; int digitc =(randomNum/100)%10;ここでこのコードを説明することができます – user793384

1

あなたの誤差はごrandomNum変数のスコープ内にあります。あなたはforループでそれを宣言して初期化しており、それがそのループの範囲です。それをさらに上に宣言すると(mainのように)、メソッドの存続期間を通して使用することができます。

2番目の質問では、001-999の間に乱数を生成する代わりに、0と9の間に3つの数値を生成しないのはなぜですか? がある場合は、001-999の間にあることを確認してから、文字列に変換して同じ数を確認してください。

1

私はあなたがこれをやろうとしている方法について概念的に何かがあると思います。あなたのコードはループして3回乱数を割り当てますが、同じ変数に代入するので、最初の2つの値は破棄されます(ただし、画面に出力されることは除きます)。

なぜ、このような何かではない。

int random1 = randomGen.nextInt(10); 
int random2 = randomGen.nextInt(10); 
int random3 = randomGen.nextInt(10); 

をその後など、これらを印刷し、それらが等しいかどうかを判断するためのロジックを実行します

0

あなたが1〜999の数をしたいように思える:第二部について

/* get int from 0 to 999 */ 
int randomF0 = randomGen.nextInt(10); 
int randomF1 = randomGen.nextInt(10); 
int randomF2 = randomGen.nextInt(10); 
int randomNum = (((randomF0*10)+randomF1)*10)+randomF2; 

/* print the int with 3 figures */ 
System.out.print(String.format("%03d", randomNum)); 

for(int i = 0; i < 3; i++) 
{ 

    int randomNum = randomGen.nextInt(10); 
    System.out.print(randomNum); 
} 

これは同じですが、最後にrandomNumでかなりの数とを行います

if(randomF0==randomF2==randomF3) "3 same figures"; 
else if(randomF0==randomF2||randomF0==randomF1||randomF2==randomF1) "2 same figures"; 

のようにしてください。

関連する問題