我正在尝试在Java
中进行编码,并开始进行基本的重复添加测验。
重复添加直到输入正确的答案正常,但是,当我尝试将其限制为3次试验时,它不会停在3,而是进行4次试验,如下所示,
import java.util.Scanner;
public class RepeatAdditionQuiz {
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);
Scanner input = new Scanner(System.in);
System.out.print("What is " + number1 + " + " + number2 + " : " );
int answer = input.nextInt();
int count = 0;
while(count < 3) {
if (number1 + number2 != answer) {
System.out.print("Try again, What is " + number1 + " + " + number2 + " : " );
answer = input.nextInt();
}
else
System.out.println("You're correct ");
count ++;
}
System.out.println("Your trails ended ");
}
}
这是我的输出,
What is 1 + 2 : 8
Try again, What is 1 + 2 : 6
Try again, What is 1 + 2 : 9
Try again, What is 1 + 2 : 9
Your trails ended
正如你所看到的,我有四条跟踪第一条。当我尝试在while
循环(打印What is 1 + 2 :
)之前删除第一个用户输入时,我在控制台中看不到任何内容。我怎么能把它限制在3?
在python
我可以做这样的事情,
from random import randint
number1 = randint(0,9)
number2 = randint(0,9)
answer = number1 + number2
count = 0
while count < 3:
print(number1, "+", number2)
user_answer = int(input("What is number1 + number2: "))
if answer == user_answer:
print("yes, you're right")
break
else:
print("You're wrong, please enter again")
count +=1
print("Sorry, all trials are done! ")
我得到这样的输出,正是三条路径(每次我输错了答案),
8 + 5
What is number1 + number2: 16
You're wrong, please enter again
8 + 5
What is number1 + number2: 18
You're wrong, please enter again
8 + 5
What is number1 + number2: 18
You're wrong, please enter again
Sorry, all trials are done!
我在java
犯了什么错误?在while
循环中有没有更好的方法?任何建议都将不胜感激。
答案 0 :(得分:1)
您可以将主要方法更改为如下所示。基本上,你的代码是由Dave建议的更改和else块中的break语句。
希望这有帮助
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);
Scanner input = new Scanner(System.in);
System.out.print("What is " + number1 + " + " + number2 + " : " );
int answer = input.nextInt();
int count = 0;
while(count < 2) {
if (number1 + number2 != answer) {
System.out.print("Try again, What is " + number1 + " + " + number2 + " : " );
answer = input.nextInt();
}
else{
System.out.println("You're correct ");
break;
}
count ++;
}
System.out.println("Your trails ended ");
}
答案 1 :(得分:1)
我更喜欢在像这样的情况下使用do-while循环
import java.util.Scanner;
public class RepeatAdditionQuiz {
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);
Scanner input = new Scanner(System.in);
System.out.print("What is " + number1 + " + " + number2 + " : ");
int answer = input.nextInt();
int count = 1;
do {
if (number1 + number2 != answer) {
System.out.print("Try again, What is " + number1 + " + " + number2 + " : ");
answer = input.nextInt();
} else{
System.out.println("You're correct ");
break;
}
count++;
} while (count < 3);
System.out.println("Your trails ended ");
}
}
在此我将count初始化为1,因为我们已经在实例化时提供了一个输入答案。
答案 2 :(得分:1)
您的代码问题最初是您要求猜测答案,然后将计数初始化为0.
int answer = input.nextInt();
int count = 0;
您已经向用户询问了第一条路径,因此将计数初始化为1。
int count = 1;
解决这类问题的另一种方法是使用@Ayush Goyal提到的do-while。
答案 3 :(得分:0)
要接近你的Python示例,你可以尝试这样的事情
public static void main(String[] args) {
// TODO Auto-generated method stub
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);
Scanner input = new Scanner(System.in);
int answer = 0;
int count = 0;
while(count < 3) {
System.out.print("What is " + number1 + " + " + number2 + " : " );
answer = input.nextInt();
if (number1 + number2 != answer) {
System.out.println("You're wrong, please enter again");
}
else{
System.out.println("You're correct ");
break;
}
count ++;
}
System.out.println("Your trails ended ");
}