我正在參加我的高中AP計算機科學課。如何正確使用goto語句
我決定把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)
我去#2一個goto
問題,找出如何正確地做到這一點,我做了完全一樣的答案中的一個證明。我真的不明白爲什麼編譯器想要一個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();
}
}
歡迎來到Java。雖然'goto'是java中的一個關鍵字,它沒有功能並且會導致編譯錯誤(正如您在問題中所述)。 – DwB 2014-10-17 17:51:14
小心:http://xkcd.com/292/ – 2014-10-17 17:54:55
即使您找到了完美的用例並且完全有意義,也可以找到另一種方法來完成它。充其量,大多數與你一起工作的人會少想你。實際上並不是那麼糟糕,但你永遠不會超越這個恥辱。 – 2014-10-17 17:57:00