连接循环的结果

时间:2017-09-28 08:49:03

标签: java loops for-loop do-while

String lottoNumbers = "";
        Scanner scan = new Scanner(System.in);
        System.out.println("To buy a ticket we need your numbers...");


        for (int i = 1; i <= 6; i++)
        {
            System.out.println("Please enter number " + i);
            int userNum = scan.nextInt();

            if (userNum >= 1 && userNum <= 49) 
            {
                lottoNumbers = lottoNumbers + userNum;
                if (i < 6) lottoNumbers = lottoNumbers + ", ";
            }

            else
                do {
                    System.out.println("Numbers must be between 1 and 49. \nPlease try again.");
                    userNum = scan.nextInt();
                    }
                while (userNum <1 || userNum >49);
        }   

        System.out.println("You selected numbers " + lottoNumbers);
        System.out.println("Ticket has been printed, please pay £2.");

因此,我们的目的是练习,做,做循环。我们要创建这个do while循环,用户在1到49之间输入6个数字。如果他们进入这个范围之外,他们需要重新输入,直到输入介于1和49之间。

我遇到的问题是,如果他们第一次在1-49之内输入全部6,输出就会被正确连接,即&#34;你的数字是1,2,3,4,5,6和#34;

但是如果他们搞砸说第4个条目,那么输出就会错过这个。 I.e&#34;您的号码是1,2,3,5,6和#34;

不太确定我在哪里出错了。请注意我们不久就开始使用Java,而且我在此阶段可以使用的解决方案类型有限。

我必须遵循的伪代码是:

1.1.    Declare a String variable to hold the output
1.2.    Declare scanner variable
1.3.    Print “To buy a ticket we need your numbers…”
1.4.    Loop 6 times
1.4.1.  Print “Please enter lotto number x”
1.4.2.  Declare variable to hold users num
1.4.3.  Store users num
1.4.4.  If number is between 1 and 49 then
1.4.4.1.1.  concatenate the users number plus a comma to the output
1.4.5.  Else
1.4.5.1.1.  Do Loop
1.4.5.1.1.1.    Print “numbers must be between 1 and 49 please try again”
1.4.5.1.1.2.    Store users num
1.4.5.1.2.  Loop While users num < 0 or users num> 49
1.4.6.  End If
1.5.    End Loop
1.6.    Print “You selected numbers “ + output
1.7.    Print “Ticket has been printed – please pay £2”

2 个答案:

答案 0 :(得分:1)

在您的其他部分,您要求用户输入一个新号码,然后保存,但不要将其添加/连接到您的String lottoNumbers。

另外,我要小心你从else循环添加这个,这样你就不会错误地添加额外的数字。

答案 1 :(得分:0)

当用户在主循环中输入一个超出范围的数字时,追赶do { } while ( )循环不会处理输入。它确定有效性,但它不会在任何地方使用它。

你需要做的是,一旦用户在追赶循环中纠正自己,将值附加到字符串。

if (userNum >= 1 && userNum <= 49) {
    lottoNumbers = lottoNumbers + userNum;
    if (i < 6) lottoNumbers = lottoNumbers + ", ";
} else {
    do {
        System.out.println("Numbers must be between 1 and 49. \nPlease try again.");
        userNum = scan.nextInt();
    } while (userNum < 1 || userNum > 49);
    // Process valid input here
    lottoNumbers = lottoNumbers + userNum;
    if (i < 6) lottoNumbers = lottoNumbers + ", ";
} // Note the extra brackets around else block