在java中,使用for循环拾取单个数字,并将它们连接在一起形成一个字符串

在java中,使用for循环拾取单个数字,并将它们连接在一起形成一个字符串,java,for-loop,Java,For Loop,所以我必须用Math.random()创建三个随机数;方法然后使用for循环自己输出每个数字,然后使用连接将它们转换为字符串。这是我的作业。其他的我都做了。我可以用另一种方式,但它需要一个for循环。我不能使用随机类。我在我的课程中没有学过,所以不能应用 public class Lottery { public static void main(String[] args) { //declare and initialized variables and ob

所以我必须用Math.random()创建三个随机数;方法然后使用for循环自己输出每个数字,然后使用连接将它们转换为字符串。这是我的作业。其他的我都做了。我可以用另一种方式,但它需要一个for循环。我不能使用随机类。我在我的课程中没有学过,所以不能应用

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.");
        }



    }
}
公共类彩票
{
公共静态void main(字符串[]args)
{
//声明并初始化变量和对象
扫描仪输入=新扫描仪(System.in);
//识别重复的步骤并使用for循环结构
对于(int i=0;i<3;i++)
{
双乐透=数学随机();
int lotteryNumberDigit=(int)(乐透*10);
字符串lotteryNumberString=Integer.toString(lotteryNumberDigit);
}
String firstNumber=lotteryNumberString.substring(0,0);
String secondNumber=lotteryNumberString.substring(1,1);
String thirdNumber=lotteryNumberString.substring(2,2);
字符串firstTwoWinner=firstNumber+secondNumber;
字符串lastTwoWinner=secondNumber+thirdNumber;
字符串AllNumberWinner=firstNumber+secondNumber+thirdNumber;
System.out.println(“请输入您的三个数字(例如123):”;
字符串userInput=input.next();
if(userInput.substring(0,2).equals(firstTwoWinner))
{
System.out.println(“获胜者:+allNumbersWinner”);
System.out.println(“恭喜,前面的一对匹配了。”);
}
else if(userInput.substring(1,3).equals(lastTwoWinner))
{
System.out.println(“获胜者:+allNumbersWinner”);
System.out.println(“恭喜,端对匹配了。”);
}
else if(userInput.equals(allNumbersWinner))
{
System.out.println(“获胜者:+allNumbersWinner”);
System.out.println(“恭喜,两对都匹配了。”);
}
其他的
{
System.out.println(“获胜者:+allNumbersWinner”);
对不起,没有比赛。无论如何,你只有百分之一的机会获胜;
}
}
}

我不得不取出阵列,因为我的老师说要到下一章才能看到。

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

为循环创建一个
,通过
Math.random()
方法创建一个随机数,然后输出它


如果随后通过该方法将
int
转换为
字符串
,则可以使用
+
运算符将它们连接起来,并在循环后输出所有三个值。

您只需在下面写入即可打印3位数字

    Random random = new Random();
    for(int i=0; i < 3; i++){
        int randomNumber = random.nextInt(10);
        System.out.print(randomNumber);
    }
        System.out.println();
如果要从字符串中获取数字,只需执行以下操作:

    int concatenatedValue = Integer.parseInt(newConcatNumString);
编辑: 如果您不想使用
Random
类,请执行以下操作(仅更新第一个示例。第二个示例也可以使用相同的操作):

在上述循环之后,
generatedNumbers
将包含所有三位数字作为数组中的单独条目。您的比较代码可以如下所示:

    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();
  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.");
    }

让我们看看代码中最新添加的内容(行号供参考):

你觉得这里有问题吗?生成了多少个随机数?在for循环中重复什么操作?应该重复什么

如果您能回答这些问题,那么您可能会想出如何修复它,从而生成三个(可能)不同的数字


p.s.我还建议您保留这个for循环,并删除其余代码。您最初拥有许多正确的作品。现在,我们需要在这个for循环的基础上进行构建(一旦您修复了它),以便按照正确的顺序将这些部分组合在一起。

让我们备份一下。首先,您可以使用for循环生成数字吗?既然你已经发布了一些代码,我不介意问你是否可以发布准确的作业描述……是的,这里是作业,请看第5步:“使用for循环选择单个数字,并将它们连接在一起形成一个字符串。”这并不是说输出每个数字。我更改了代码,但现在它只给我000,而不是实际分配的不同数字。我完全看错了吗?@user1745508:看起来他们只是想让你一次生成一个3位数,出于某种原因,请参阅YogendraSingh:的答案,了解如何做到这一点。@Keppil我相信他们这样做是因为这样可以更容易地获取前导零。@user1745508然后使用你知道的
random
方法。如果你什么都不知道,那么这段代码对你很有帮助代替
int lotteryNumberDigit=(int)lotto。由于您的
0到1之间是随机的,因此您的
int
将变为
0
。将其乘以以生成随机数,例如0.3566到3.566,然后将其转换为int。它将为你,3。我也更新了答案。它的数组类型为
int
。假设您要存储5个数字或10个数字(相同类型的值),那么您有两种方法。第一:您可以定义5或10个变量,例如number1、number2..number5…nimber10,或者您可以定义大小为10的数字数组,例如int[]number=int[10]。现在您可以将变量引用为数字[0]、数字[1]、…数字[4]…数字[9]。当您使用
循环时,处理变得更加容易,例如for loop。如您所见,我将变量称为
generatedNumbers[I]
,其中我移动为0、1和2。这样,你就不需要定义几个变量,你就有了更好的控制能力。您可以很好地做到这一点,但不要忘记转换
字符串
  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.");
    }
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