如何在Java中进行goto?
我正在尝试制作一个类似“家庭恩怨”的游戏,用户被问到一个问题,他们必须回答3次,所以我想知道是否有类似于“goto”的东西我可以使用如何在Java中进行goto?,java,Java,我正在尝试制作一个类似“家庭恩怨”的游戏,用户被问到一个问题,他们必须回答3次,所以我想知道是否有类似于“goto”的东西我可以使用 Question question = questions.get(new Random().nextInt(questions.size())); System.out.println(question.getQuestion()); Scanner scanner = new Scanner(System.in); //want to put start r
Question question = questions.get(new Random().nextInt(questions.size()));
System.out.println(question.getQuestion());
Scanner scanner = new Scanner(System.in);
//want to put start right here but can't
//start:
String answer = scanner.nextLine();
for (Answer a : question.getAnswers())
{
if (a.getAnswer().toLowerCase().contains(answer))
{
System.out.println(a.getAnswer() + " " + a.getPoints());
return;
//Make it go back to start right here
}
}
System.out.println("WRONG!");
//also make it go back to start right here
尝试一个简单的
,同时像这样围绕代码循环:
String answer = scanner.nextLine();
while (true)
{
for (Answer a : question.getAnswers())
{
if (a.getAnswer().toLowerCase().contains(answer))
{
System.out.println(a.getAnswer() + " " + a.getPoints());
}
else
break; // exit the loop if IF statement is false.
}
System.out.println("WRONG!");
break;
}
你不需要goto
。更好的方法是使用break
并在循环后检查结果:
Question question = questions.get(new Random().nextInt(questions.size()));
System.out.println(question.getQuestion());
bool success = false;
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 3 && !success; i++) {
String answer = scanner.nextLine();
for (Answer a : question.getAnswers()) {
if (a.getAnswer().toLowerCase().contains(answer)) {
System.out.println(a.getAnswer() + " " + a.getPoints());
success = true;
break;
}
}
}
if (!success) {
System.out.println("WRONG!");
}
Question-Question=questions.get(new Random().nextInt(questions.size());
System.out.println(question.getQuestion());
布尔成功=假;
扫描仪=新的扫描仪(System.in);
for(int i=0;i<3&&!success;i++){
字符串应答=scanner.nextLine();
for(回答a:question.getAnswers()){
如果(a.getAnswer().toLowerCase().contains(answer)){
System.out.println(a.getAnswer()+“”+a.getPoints());
成功=真实;
打破
}
}
}
如果(!成功){
System.out.println(“错误!”);
}
您想得太多了,只需要一个for
循环:
Question question = questions.get(new Random().nextInt(questions.size()));
System.out.println(question.getQuestion());
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
String answer = scanner.nextLine();
boolean correct = false;
for (Answer a : question.getAnswers()) {
if (a.getAnswer().toLowerCase().contains(answer)) {
System.out.println(a.getAnswer() + " " + a.getPoints());
correct = true;
break;
}
}
if (!correct) {
System.out.println("WRONG!");
}
}
Question-Question=questions.get(new Random().nextInt(questions.size());
System.out.println(question.getQuestion());
扫描仪=新的扫描仪(System.in);
对于(int i=0;i<3;i++){
字符串应答=scanner.nextLine();
布尔正确=错误;
for(回答a:question.getAnswers()){
如果(a.getAnswer().toLowerCase().contains(answer)){
System.out.println(a.getAnswer()+“”+a.getPoints());
正确=正确;
打破
}
}
如果(!正确){
System.out.println(“错误!”);
}
}
goto
在任何语言中都是一种不好的做法,因为这会使遵守代码变得困难。实际上,总是有更好的方法来实现你想要的。为什么不运行一个循环3次,如果有错误的答案就退出循环呢?你正在寻找带标签的continue
。如果问题是“我该如何做一个转到?”,那么你可能做错了。。。