2013-07-26 67 views
-2

我有一個方法,檢查一個int從其他方法讀入並將其與其相反。如果數字相等並且因此是迴文,則返回true。但是,無論輸入的數字是否爲迴文,錯誤都會一直返回。等於int返回false

public class Paladin 
{ 
    public static void main() 
    { 
     boolean valid; 

     String inputString = JOptionPane.showInputDialog("Enter a number to be reversed: "); 
     int inputInt = Integer.parseInt(inputString); 

     valid = isPalindrome(Reverse(inputInt)); 

     if(valid) 
      JOptionPane.showMessageDialog(null, inputInt + " is a palindrome"); 

     else 
      JOptionPane.showMessageDialog(null, inputInt + " is not a palindrome"); 

     public static boolean isPalindrome (int number) 
     { 
      int undoReverse = 0; 

      while(number > 0) 
      { 
       undoReverse = undoReverse * 10 + number % 10; 
       number /= 10; 
      } 

      if(number == undoReverse) 
       return true; 

      else 
       return false; 
     } 
    } 
} 

回答

1

發生這種情況,因爲你提到如下修改輸入numberisPalindrome方法:

number /= 10; 

,因此您的

if(number == undoReverse) 

比較不與輸入數量發生,而是正在發生的修改號碼。您基本上需要保留這個原始數字進行比較並使用不同的變量。試試這個:

public static boolean isPalindrome (int number) 
     { 
      int undoReverse = 0; 
      int inputNumber = number; 

      while(number > 0) 
      { 
       undoReverse = undoReverse * 10 + number % 10; 
       number /= 10; 
      } 

      if(inputNumber == undoReverse) 
        return true; 

      else 
       return false; 
      } 
} 
0

while循環結束時number <= 0,但你測試是否number == undoReverse。您正在修改number,然後嘗試測試修改後的值是否相等。相反,你應該根據副本number來計算undoReverse