2015-11-19 55 views
1

因此,我編寫了我的迴文編程程序,該程序應該打印範圍內所有迴文數字,但它似乎只打印0到9,這意味着它評估所有其他數字爲假。我不明白爲什麼?使用數字位數打印所有迴文數字

public class Palindrome 
{ 
    public static void main(String [] args) 
    { 
     int number = 0; 
     final int END = 10000; 

     while (number <= END) 
     { 
      if (isPalindrome(number)) 
      { 
       System.out.print(" " + number); 
      } 

      number++; 
     } 
    }// end of main method 
    public static boolean isPalindrome(int number) 
    { 
     //local variables 
     int counter = 0; 
     int numDigits = 0; 
     final int END = 10000; 
     boolean palindrome = false; 


     while (number <= 10000) 
     { 
      //formula for finding the number of digits in a number 
      numDigits = getNumDigits(number); 

      //special case if number = 0 
      if (numDigits == 1) 
      { 
       palindrome = true; 
       break; 
      } 

       if(counter < numDigits/2) 
       { 
        if (((number/(int) Math.pow(10, counter)) % 10) != (number/(int) Math.pow(10, numDigits - counter - 1))) 
        { 
         palindrome = false; 
         counter++; 

        } 
        else 
        { 
         palindrome = true; 
        } 

       } 

      number++; 


     }// end of loop 
     return palindrome; 

    }//end of isPalindrome Method 
    public static int getNumDigits(int number) 
    { 
     //local variables 

     int numDigits = (int) (Math.log10(number) + 1); 

      if(number == 0) 
      { 
       numDigits = 1; 
      } 

     return numDigits; 

    }//end of getNumDigits method 


} 
+0

啓動您的調試器並親自查看。 –

+0

我沒有調試器 –

+0

然後得到一個正常的IDE(如Eclipse)。免費。 –

回答

-1

我的第一個建議是記錄你的各種方法的輸出,以確保你得到正確的輸出。使用System.out.println()可以幫助解決這個問題,因爲我看到您無法訪問調試器。

另外,至於你的isPalindrome()函數。如果你有,你必須使用數學函數的任何限制,但你可以做沿着這些路線有什麼事我不知道:

public static boolean isPalindrome(int number) { 
    String numString = number + ""; 
    for(int i = 0; i < numString.length()/2; i++){ 
     if(numString.charAt(i) != numString.charAt(numString.length() - i){ 
      return false; 
     } 
    } 
    return true; 
} 

這實質上會檢查你的反對數字的字符串表示每個字符的對應字符在字符串的末尾。您可以將條件除以2,因爲在中途點之後,您已經檢查了字符的相等性。

警告,我可能會有一些錯誤在此。我沒有測試它。我只是想提出一些想法和起點。

祝你好運!

相關問題