Я беру класс средней школы AP Computer Science.
Я решил бросить инструкцию 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)
Я отправился на вопрос goto
в Stackoverflow, чтобы узнать, как это сделать правильно, и я сделал то же, что и в одном из ответов. Я действительно не понимаю, почему компилятор хочет выполнить оператор assert
(по крайней мере, то, что я предполагаю, что он хочет), и я не знаю, как использовать assert
. Кажется, требуется, чтобы часть перезапуска goto restart;
была переменной, но перезагрузка - это всего лишь метка, которая возвращает программу обратно в строку 10, чтобы пользователь мог ввести действительный int
. Если он хочет, чтобы перезагрузка была переменной, как это сделать?
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("Please enter a nonzero, nonnegative value to be factorialized.");
int factInput = userInput.nextInt();
while(factInput<=0)
{
System.out.println("Enter a nonzero, nonnegative value to be factorialized.");
factInput = userInput.nextInt();
}
if(x<1)//This is another way of doing what the above while loop does, I just wanted to have some fun.
{
System.out.println("The number you entered is not valid. Please try again.");
goto restart;
}
while(x<=factInput)
{
factValue*=x;
x++;
}
System.out.println(factInput+"! = "+factValue);
userInput.close();
}
}