2016-10-09 1 views
0

있는지 확인하기 위해 두 가지 방법을 구현하려는 palindrome 또는 아닙니다. 나는 힌트를 적용하려고 시도했다. (숫자는 회귀 식 (= 역전 == 그 자체)) 그러나 도움이되지 않았다.나는이 숫자인지 여부를 확인하기 위해 두 가지 방법,</p> <pre><code>public static int reverse(int number) </code></pre> <p>및</p> <pre><code>public static boolean isPalindrome(int number) </code></pre> <p>내가 그들을 준비해야이 숫자는 위와 같이 회문

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 솔루션을 추가했습니다. 귀하의 문제를 해결 한 경우 올바른 및 upvote 표시하십시오. 또한 코드를 게시하는 것이 좋습니다. – cody123

답변

0

역순으로 시도하십시오.

당신이 10를 분할해야 할 수 리버스 예를 들어 10

를 곱한 새로운 반전 번호로 나머지를 추가하려면

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

이 123을 되 돌리는 단계가 될 것입니다 :

  1. 반전 = 0, 목표 = 123
  2. = 0 * 10 + 1백23퍼센트 반전 10 = 0 + = 3/3 대상 = 10분의 123 = 12
  3. 반전 = * 10 + 12 % 10 3 = 30 + 2 = 32, target = = 32 * 10 + 1 % 반전 = 1
  4. 10분의 12 = 10 + 1 = 321 (320), 목표 = 10분의 1 = 0
여기

자바 알고리즘의 구현 :

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로 8 진수 (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을 작동합니다.