Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中进行goto?_Java - Fatal编程技术网

如何在Java中进行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

我正在尝试制作一个类似“家庭恩怨”的游戏,用户被问到一个问题,他们必须回答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 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
。如果问题是“我该如何做一个转到?”,那么你可能做错了。。。