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”
答案 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