2011-03-09 38 views
0

我在該行收到錯誤如果在Java代碼中的錯誤否則

else break; 

我認爲它可能與「{}」

public class Palindrome { 

    private static String number; 

    public static void main(String[] args) { 
     display(); 
    } 

    private static int getUserInput() { 
     int inputNumber = 0; 
     String answer = JOptionPane.showInputDialog(null, "Please enter a five digit number","Enter a number"); 
     inputNumber = Integer.parseInt(answer); 

     if(number.length() !=5){ 
      JOptionPane.showMessageDialog(null,"Please enter a 5 digit number!","Try again", 
      JOptionPane.PLAIN_MESSAGE); 

     else break; 
     } 

     return inputNumber; 
    } 

    private static boolean check(){ 
     int inputNumber = getUserInput(); 
     int number = inputNumber; 
     int[] myArray = new int[5]; 
     for (int i = 0; i < myArray.length; i++) { 
      myArray[i] = (int) (number /(Math.pow(10,i)) % 10); 
     } 
     if(myArray[0] == myArray[4] && myArray[1] == myArray[3]) 
      return true; 
     else 
      return false; 
    } 

    public static boolean display(){ 
     if (check() == true) { 
     JOptionPane.showMessageDialog(null, "This number is a Palindrome", 
     "Excellent!",JOptionPane.INFORMATION_MESSAGE); 
     } else 
      JOptionPane.showMessageDialog(null, 
       "Number is not a Palindrome!", 
       "Sorry", 
       JOptionPane.ERROR_MESSAGE); 
      return false; 
     } 
    } 
} 

感謝

的位置做
+4

如果您縮進代碼,您會發現修復這些錯誤要容易得多 - 您應該發現IDE願意爲您自動執行此操作。 – 2011-03-09 18:02:46

回答

4

else不能成爲if的一部分。所以,改變這一點 -

if(number.length() !=5) 
{ 
    JOptionPane.showMessageDialog(null,"Please enter a 5 digit number!","Try again", 
    JOptionPane.PLAIN_MESSAGE); 
} 
else break; 

此外,我不明白你爲什麼在這裏使用break

+1

沒有循環可以擺脫。 – Erik 2011-03-09 18:03:28

+0

@Erik - 這是我的疑惑。爲什麼@Mike在沒有循環出現的時候在這裏使用'break'! – Mahesh 2011-03-09 18:05:12

1
if(/*some condition*/){ 
}else{ 
    break;//invalid use of break it won't compile see below 
} 

你是不匹配if

而且書面方式else你不能break沒有loopswitch case

+0

其實,你也可以跳出一個命名的陳述,但是這裏也沒有這樣的陳述。 (休息時間需要聲明的名稱。) – 2011-03-09 18:06:22

+0

@Paŭlo你的意思是打破標籤? – 2011-03-09 18:17:20

+0

啊,是的,*標籤*是正確的詞:-) – 2011-03-09 18:28:35

1

另外一張紙條:代碼,如「如果(條件)返回true;否則返回假;」可以代替「退貨條件」。更乾淨。

1

你不能從break;一個方法,而是你必須從一個方法返回。但在你的情況下,它會出現你想要一個重試循環。

private static int getUserInput() { 
    while(true) { 
    String answer = JOptionPane.showInputDialog(null, "Please enter a five digit number","Enter a number"); 
    if(answer.length() == 5) 
     return Integer.parseInt(answer); 
    JOptionPane.showMessageDialog(null,"Please enter a 5 digit number!","Try again", 
     JOptionPane.PLAIN_MESSAGE); 
} 
} 
+0

我在底部的行「return inputNumber;」出現錯誤它說無法訪問的代碼。 – Mike 2011-03-09 18:17:44

+0

@Mike,你不需要它。我已經更新了代碼。 – 2011-03-09 18:23:06

+0

當我插入一個不等於五的數字時,它會顯示原始框以輸入數字,但它不會給我錯誤框。現在,當我再次插入一個不等於5的數字時,它會顯示錯誤框。所以只有在第二次錯誤嘗試之後才能正常工作。 – Mike 2011-03-09 18:48:05

1

有兩個問題:

  1. else語句沒有與if語句相關聯。您需要將其移動到{}以外的其他地方
  2. 您正在使用一段時間或for循環(或命名語句)之外的中斷。

如果您試圖退出應用程序,那麼您可以使用System.exit方法。然而,更好的方法是返回一個值,指出用戶沒有選擇一個值,例如-1或null(將方法的返回類型更改爲Integer)。