如何正确使用goto语句

10 浏览
0 Comments

如何正确使用goto语句

我正在上高中AP计算机科学课程。

我决定在我们的实验中插入一个goto语句,只是为了玩一下,但是我遇到了这个错误。

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Syntax error on token "goto", assert expected
    restart cannot be resolved to a variable
at Chapter_3.Lab03_Chapter3.Factorial.main(Factorial.java:28)

我去Stackoverflow上的一个goto问题找出如何正确使用它,并且我完全按照一个答案中演示的方法做了。我真的不明白为什么编译器想要一个assert语句(至少我认为是这样),也不知道如何使用assert。它似乎希望goto restart;中的restart部分成为一个变量,但restart只是一个标签,将程序拉回到第10行,以便用户可以输入一个有效的int。如果它希望restart成为一个变量,我该怎么做呢?

import java.util.*;
public class Factorial 
{
    public static void main(String[] args) 
    {
        int x = 1;
        int factValue = 1;
        Scanner userInput = new Scanner(System.in);
        restart:
        System.out.println("请输入一个非零、非负的值进行阶乘计算。");
        int factInput = userInput.nextInt();
        while(factInput<=0)
        {
            System.out.println("请输入一个非零、非负的值进行阶乘计算。");
            factInput = userInput.nextInt();
        }
        if(x<1)//这是另一种完成上面while循环的方式,我只是想开个玩笑。
        {
            System.out.println("您输入的数字无效,请重试。");
            goto restart;
        }
        while(x<=factInput)
        {
            factValue*=x;
            x++;
        }
        System.out.println(factInput+"! = "+factValue);
        userInput.close();
    }
}

0