2013-03-01 2 views
0

저는 대학 과정을 수료하는 자바 사용자입니다. 문제가 생겼습니다. 내 교수. 우리에게 5 자리 숫자 기반의 회유를 감지하는 Java 프로그램을 작성하라고 말했습니다. 나는 무언가를 썼지 만 그것은 내가 계획 한대로 작동하지 않을 것이다. 좀 도와 줄래? netbeans IDE를 사용합니다.왜 내 회문이 작동하지 않습니까?

package palindrome; 

import javax.swing.JOptionPane; 

public class Palindrome { 

    public static void main(String[] args) { 

     String stringNumber; 
     int number; 
     String stringPal; 
     int palindrome; 

     stringNumber = JOptionPane 
       .showInputDialog("Please, if you will, enter a five digit palindrome: "); 
     number = Integer.parseInt(stringNumber); 

     if (number < 10000 && number > 99999) { 
      System.out 
        .println("Your number is invalid, please enter a FIVE digit number: "); 
     } else if (number % 10 == number % 100) { 
      System.out.println("your number: " + number + "is a palindrome"); 
     } else { 
      System.out.println("You FAIL loser"); 
     } 
    } 
} 
+5

만약 당신이 스스로를 모욕하는 * 당신은 실패자 * 물론 자신의 오류를 찾고 싶지 않아 :). –

+1

그건 그렇고, 999 % 10 = 9, 999 % 100 = 99입니다. 그것이 문제가되는 곳입니다. –

+0

예. 대답은 약간의 작업이 필요합니다 ... – DigCamara

답변

0

이미 지적했듯이 회문에 대한 논리는 잘못되었습니다.

확인할 사항은 반대로 문자열/번호가 동일한 지 확인하는 것입니다.

문자열이 회문인지 확인하고, 역순으로 원래 문자열과 같은지 확인하고 싶다고 가정 해 보겠습니다.

이 템플릿을 완료하려고합니다

boolean isPalindrome(String s){ 

    String reverseString = reverseString(s); 

    if(reverseString.equals(s)){ 
     return true; 
    } 

    return false; 
} 

String reverse(String s){ 
    //add code to reverse String. (and optionally check if it is Integer, if it is a requirement) 
} 

이제 문자열을 반대하는 방법을 구글 수 있습니다.

추신 : StringBuilder 클래스를 살펴볼 수 있습니다.

+1

감사합니다. 이것은 내가 필요로했던 바로 그 도움입니다. 내 수준에 맞고 지금 자바에있는 곳에서는 복잡하지 않습니다. sam-i-am과 rgettman의 도움을 크게 주셔서 감사합니다. –

11

귀하의 palindrome 논리가 올바르지 않습니다. 10으로 나누었을 때의 나머지가 100으로 나뉠 때의 나머지와 같은지 확인합니다. 이는 십 자리수에 0이있는 경우에만 해당됩니다. 이는 palindrome의 정의가 아닙니다.

+5

대신 palindrome 구현을 제공하지 않기 때문에 OP 대신 자신/자신의 솔루션을 찾을 수 있습니다. –

+0

피드백을 보내 주셔서 감사합니다 –

0

숫자 % 10 == number % 100은 (는) 회문을 의미하는 것으로 이해하지 못합니다.하지만 마지막 2 자리의 값과 마지막 1 자리의 값을 비교하면됩니다.

내 조언은 string 또는 char 배열로 입력을하고, 처음에 문자열의 마지막 요소를 비교하고, 여기에 중간

을 칠 때까지 계속하는 것입니다 것은 일부 psudo 코드입니다 :

isPalindrome = true; 

for i=0 to stringLength 

    if(input[i] != input[length - i - 1]) 
     isPalindrome = false; 
+0

의견을 보내 주셔서 감사합니다. 많은 도움을주었습니다. –

관련 문제