2016-10-09 17 views
0

如上所述,我有兩種方法,我想實現兩個方法來檢查,如果一個號碼是迴文

public static int reverse(int number) 

public static boolean isPalindrome(int number) 

我應該安排他們來檢查號碼是否迴文或不。我試圖應用提示(一個數字是迴文,如果(其反轉==本身)),但它沒有幫助。

import java.util.Scanner; 

public class Test { 
    public static void main(String[] args) { 

     System.out.println("This program checks whether a number is palindrome or not. Enter a number: "); 
     Scanner input = new Scanner(System.in); 
     int inputNumber = input.nextInt(); 

     // if inputNumber is palindrome 

     System.out.println("The number is palindrome."); 

     // else 

     System.out.println("The number is not a palindrome."); 
    } 


     public static int reverse(int number) 

     // reverse number 


     public static boolean isPalindrome(int number) 

     // check if the number is palindrome  
    } 
} 
+3

你試過的代碼在哪裏? – cody123

+1

「但它沒有幫助」 - 爲什麼不呢?這是正確的,所以你的反轉代碼是不正確的。請出示 –

+0

@ q1612749我已添加解決方案。如果它解決了您的問題,請標記正確並注意上傳。另外如果你發佈你的代碼會更好。 – cody123

回答

0

試試這種反轉方法。

Step0 : temp = 0 number = 4554 
Step 1 : temp = 4 number = 455 
Step 2 : temp = 4*10 + 5 = 45 and number = 45 
Step 3 : temp = 45*10 + 5 = 455 and number = 4 
Step 4 : temp = 455*10 + 4 = 4554 and number = 0 


    if (inputNumber == reverse(inputNumber)) { 
     System.out.println("The number is palindrome."); 
    }else{ 
     System.out.println("The number is not a palindrome."); 
    } 

public static int reverse(int number) { 
    int temp = 0; 
    while (number > 0) { 
     temp = temp * 10 + number % 10; 
     number = number/10; 
    } 
    return temp; 
} 
+0

不要用簡單的代碼片段回答作業問題。相反,至少要提供Dmitry Smorzhok所做的解釋。 – Esko

+0

是的感謝downvoting。 – cody123

+0

這不是家庭作業問題。我23歲(差不多24歲)和失業。我很久以前就離開了學校。我只想知道解決這個問題的方法。 – q1612749

2

爲了扭轉一些應除以10它,其餘添加到新的反轉數乘以10

例如,這將是恢復123的步驟:

  1. 反轉= 0,目標= 123
  2. 反轉= 0 * 10 + 123%10 = 0 + 3 = 3,目標=一十分之一百二十三= 12
  3. 反轉= 3 * 10 + 12%10 = 30 + 2 = 32,目標=一十分之一十二= 1
  4. 反轉= 32 * 10 + 1%10 = 320 + 1 = 321,目標= 1/10 = 0

以下是在Java實現這種算法的:

public static int reverse(int number) { 
    int reversed = 0; 
    while (number > 0) { 
     reversed *= 10; 
     reversed += number % 10; 
     number /= 10; 
    } 
    return reversed; 
} 

public static boolean isPalindrome(int number) { 
    return number == reverse(number); 
} 
+0

添加了我的解決方案。任何意見? – q1612749

+0

@ q1612749除了你的return語句可以簡化爲'return n2 == reverse(n2)'外,它和我的很相似。關於你的011情況 - Java將011解釋爲八進制數字(因爲它以0開始),所以base10的值是9,這是一個迴文。 –

0
import java.util.Scanner; 

public class Test { 
    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.println("Enter an integer: "); 
     int inputNumber = input.nextInt(); 

     if (isPalindrome(inputNumber)) 
      System.out.println(inputNumber + " is a palindrome. "); 
     else 
      System.out.println(inputNumber + " is not a palindrome. "); 

     input.close(); 
    } 

    public static int reverse(int n1) { 
     int reversedNumber = 0; 
     while (n1 != 0) { 
      reversedNumber *= 10; 
      reversedNumber += (n1 % 10); 
      n1 /= 10; 
     } 

     return reversedNumber; 
    } 

    public static boolean isPalindrome(int n2) { 
     if (n2 == reverse(n2)) 
      return true; 
     else 
      return false; 

    } 
} 

這是問題的解決方案。但是這並不包括我可以輸入「011」的情況,程序會說「11」是迴文。我怎麼能解決這個問題?

+0

將其插入到你的問題中。不要將問題發佈爲答案。 – Holger

0

下面的算法將工作

1. Loop until the input number become 0. 

    1.1 remainder = number % 10; 
    1.2 reverse = reverse * 10 + remainder; 
    1.3 number = number/10; 

2. Return reverse when the loop breaks. That means number became 0. 

Check full implementation here

相關問題