1

そのため、Math.random(); を使用して 3 つの乱数を作成する必要があります。メソッドは、for ループを使用して各数値を単独で出力し、連結を使用してそれらを文字列にします。それは私の任務のためです。私は他のすべてをやった。別の方法で行うこともできますが、for ループが必要です。Random クラスを使用できません。私は自分のコースでそれを学んでいないので、適用できません。

public class Lottery
{
    public static void main(String[] args)
    {
        //declare and initialized variables and objects
        Scanner input = new Scanner(System.in);



        //Identify the repeated steps and use a for loop structure


        for(int i=0; i < 3; i++) 
        {
            double lotto = Math.random(); 
            int lotteryNumberDigit = (int)(lotto*10);

           String lotteryNumberString = Integer.toString(lotteryNumberDigit);

        }



            String firstNumber = lotteryNumberString.substring(0,0);
            String secondNumber = lotteryNumberString.substring(1,1);
            String thirdNumber = lotteryNumberString.substring(2,2);

            String firstTwoWinner = firstNumber + secondNumber;
            String lastTwoWinner = secondNumber + thirdNumber;
            String allNumbersWinner = firstNumber + secondNumber + thirdNumber;

            System.out.println("Please enter your three numbers (e.g. 123): ");

            String userInput = input.next();

             if(userInput.substring(0,2).equals(firstTwoWinner))

        {
            System.out.println("Winner: " + allNumbersWinner );

            System.out.println("Congratulations, the front pair matched.");
        }

        else if (userInput.substring(1,3).equals(lastTwoWinner))
        {
             System.out.println("Winner: " + allNumbersWinner );

             System.out.println("Congratulations, the end pair matched.");
        }

        else if (userInput.equals(allNumbersWinner))
        {
             System.out.println("Winner: " + allNumbersWinner );

             System.out.println("Congratulations, both pairs matched.");
        }

        else
        {
             System.out.println("Winner: " + allNumbersWinner );

             System.out.println("Sorry, no matches. You only had one chance out of 100 to win anyway.");
        }



    }
}

先生が次の章まで期待できないと言ったので、アレイを取り出さなければなりませんでした。

4

3 に答える 3

1

以下に書くだけで、3桁の数字を印刷できます。

    Random random = new Random();
    for(int i=0; i < 3; i++){
        int randomNumber = random.nextInt(10);
        System.out.print(randomNumber);
    }
        System.out.println();

注:メソッドを使用printすると、3 つの数字を並べて出力できます。

または、以下を実行できます。

    String newConcatNumString = "";
    Random random = new Random();
    for(int i=0; i < 3; i++){
       newConcatNumString  = newConcatNumString +random.nextInt(10);
    }
    System.out.println(newConcatNumString);

文字列から数値を取得したい場合は、次のように簡単に実行できます。

    int concatenatedValue = Integer.parseInt(newConcatNumString);

編集:クラス を使用したくない場合Randomは、以下を実行します(最初の例のみを更新します。2番目にも同じことが適用できます):

    for(int i=0; i < 3; i++){
        int lotteryNumberDigit = (int)(Math.random()*10);
        System.out.print(lotteryNumberDigit);
    }
    System.out.println();

編集:次の問題のためint[]に、最初に を定義し、後で比較に使用できるように値を配列に保存します。以下のようにコード スニペットを更新しました。

    int[] generatedNumbers = new int[3];
    for(int i=0; i < 3; i++){
        int lotteryNumberDigit = (int)(Math.random()*10);
                    generatedNumbers[i] = lotteryNumberDigit;
        System.out.print(lotteryNumberDigit);
    }
    System.out.println();

上記のループの後、generatedNumbers配列内の個別のエントリとして 3 つの数字すべてが含まれます。比較コードは次のようになります。

  System.out.println("Please enter your three numbers, one digit at a time): ");
  for(int i=0; i<3; i++){
    int userInput = input.next();
    if(userInput == generatedNumbers[i]){
        System.out.println("Your digit "+i+" is correct");
    }else{
        System.out.println("Your digit "+i+" is incorrect");
    }
  }

編集: 以下のように比較してください:

    if (userInput.equals(allNumbersWinner)) {
         System.out.println("Winner: " + allNumbersWinner );
         System.out.println("Congratulations, both pairs matched.");
    }else if(userInput.substring(0,2).equals(firstTwoWinner )) {
        System.out.println("Winner: " + allNumbersWinner);
        System.out.println("Congratulations, the front pair matched.");
    }else if (userInput.substring(1,3).equals(lastTwoWinner)) {
         System.out.println("Winner: " + allNumbersWinner );
         System.out.println("Congratulations, the end pair matched.");
    }else {
         System.out.println("Winner: " + allNumbersWinner );
         System.out.println("Sorry, no matches. You only had one chance out of 100 to win anyway.");
    }
于 2012-10-14T20:38:36.530 に答える
1

あなたの問題がどこにあるのかわかりません。あなたはすべてのピースを持っているようです。

ループを作成forし、メソッドを使用して乱数を作成し、Math.random()それを出力します。

メソッドを介してintaに変換すると、演算子を使用してそれらを連結し、ループ後に 3 つすべてを出力できます。StringInteger.toString(int i)+

于 2012-10-14T20:31:43.000 に答える
0

コードへの最新の追加を見てみましょう(参照用の行番号付き):

1: double randomNumber1 = Math.random(); 
2: int randomNumber = (int)randomNumber1; 

3: for ( int i = 0 ; i < 3 ; i++) 
   { 
4:    System.out.print(randomNumber); 
   } 

これが英語で何をするかを説明しましょう:

1: Generate a random decimal number
2: Convert the random number to an integer
3: Repeat line 4 three times
5:    Print out the random number

ここに問題がありますか?乱数はいくつ生成されますか?forループで繰り返されるアクションは何ですか?何を繰り返す必要がありますか

これらの質問に答えることができれば、3つの(おそらく)異なる数を生成するようにそれを修正する方法を理解するかもしれません。

psまた、これをforループのままにして、残りのコードを切り取ることをお勧めします。あなたはもともと適切な作品の多くを持っていました。次に、これらの部分を正しい順序でまとめるために、このforループを(修正したら)構築する必要があります。

于 2012-10-14T21:16:28.793 に答える