1

所以我必须使用 Math.random(); 创建三个随机数。方法然后使用 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

我不确定你的问题出在哪里,你似乎拥有所有的碎片。

您创建一个for循环,通过该方法创建一个随机数Math.random(),然后将其输出。

如果然后通过该方法将您的转换int为 a ,则可以使用运算符将​​它们连接起来,并在循环后输出所有三个。StringInteger.toString(int i)+

于 2012-10-14T20:31:43.000 回答
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方法,您将打印三个数字并排在一起。

或者,您可以执行以下操作:

    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类,请执行以下操作(仅更新第一个示例。同样可以应用于第二个示例):

    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将包含所有三个数字作为数组中的单独条目。您的比较代码如下:

  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 回答
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循环中重复了什么动作?应该重复什么?

如果您可以回答这些问题,那么您可能会弄清楚如何解决它,以便生成三个(可能)不同的数字。

ps我还建议您保留此 for 循环并删除其余代码。你最初有很多正确的部分。现在我们需要构建这个 for 循环(一旦你修复它),以便将这些部分以正确的顺序放在一起。

于 2012-10-14T21:16:28.793 回答