2010-02-17 2 views
1

long을 문자열로 변환하고 그것이 회문인지 확인하는 프로그램을 작성하려고합니다. 이제까지 다음을 작성했지만 호환되지 않는 유형 오류가 발생합니다. 나는 그것을 일으키는 원인을 찾을 수없는 것 같습니다. : S 어떤 도움이 많이 주시면 감사하겠습니다 :)Palindrome을 확인하는 프로그램

을 오류가 라인 (24)에서 발생하며 호환되지 않는 유형을 말한다 - 무효 찾았지만 java.lang.String의

예상
public class programPalindrome 

{ 

private String go() 
{ 

    Input in = new Input(); 
    System.out.print("Enter Number: "); 
    return in.nextLine(); 
    long number = in.nextLong(); 
    String Palindrome = Long.toString(number); // converts the long into a string 
    String newAnswer = reverse(Palindrome); 
    String anotherAnswer = reverseCheck(Palindrome,newAnswer); 
    System.out.println("This is a Palindrome" + Palindrome); 
} 
// Check to see if the two argument Strings are the reverse of each 
    // other. 

private String reverseCheck(String Palindrome, String newAnswer) 
{ 
    if (Palindrome.compareTo(newAnswer) == 0) { 
    return System.out.println("It is a palindrome"); 
    } 
    else 
    { 
    return System.out.println("It is not a palindrome"); 
    } 
    } 

    // Return a String which is the reverse of the argument String 
    private String reverse(final String Palindrome) 
    { 
    String result = new String(); 
    int position = 0; 
    while (position < Palindrome.length()) 
    { 
    result = new Character(newAnswer.charAt(position)).toString() + result; 
    position = position + 1; 
    } 
    return result; 
} 


public static void main(String[] args) 
{ 
    new programPalindrome().go(); 
} 
} 
+0

스택 추적을 게시 할 수 있습니까? – vicatcu

+0

오류 메시지와 오류가 발생한 행을 추가하십시오. –

+0

컴파일 오류가 어디서 발생합니까? stackTrace를 추가 할 수 있습니까? – Luhar

답변

1

함수 서명 당신이 이 이 newAnswer이

result = new Character(newAnswer... 
를 해결할 수없는

라인에 몇 가지 다른 구문 오류가 ... 문자열을 반환 할 말할 때 당신은에서 System.out.println을 반환 할 수 없습니다 그 범위에서 ... Eclipse와 같은 IDE를 사용하고 있습니까? 아마도 도움이 될 것입니다.

public class programPalindrome 

{ 

    static public boolean isPalindromic(long value){ 
     String valueAsString = Long.toString(value); 
     String reverseString = (new StringBuffer(valueAsString)).reverse().toString(); 
     if(valueAsString.equals(reverseString)){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 


    public static void main(String[] args) 
    { 

     System.out.println(args[0] + " is palindromic == " 
       + isPalindromic(Long.parseLong(args[0]))); 
    } 
} 
1

음, 한 가지를 들어, void을 반환하는 System.out.println()을 호출하고 reverseCheck() 함수에서 String으로 반환하려고합니다. 결정 : 결과를 인쇄 하시겠습니까 (예 : bool)?

2

을 시도해보십시오

return System.out.println("It is not a palindrome"); 

return "It is not a palindrome"; 

return System.out.println("It is a palindrome"); 
을 변경 : 여기

같은 일을 할 수있는 더 간단한 프로그램입니다

return "It is a palindrome"; 

에 (추가 - 또한, 귀하의 go() 방법의 논리 오류가있다. 이 컴파일러는 당신이 복구 된 후 도달 할 수없는 코드를 넣어 멀리 가지 않도록한다)

+0

당신의 도움을 위해 고마워, 나는 단지 몇 주 동안 자바를 해왔다. 그래서 이것은 꽤 초보적인 질문이다. – smellyCat

+0

좋은 행운을 빕니다 ... 당신은 아마도 자바 방법이 어떻게 작동하는지 연구해야합니다. 튜토리얼 또는 좋은 교과서를 사용해보십시오. 나는 Sun이 꽤 좋은 튜토리얼을 가지고 있다고 생각한다. 그리고 당신은이 게시물을 확인할 수 있습니다 : http://stackoverflow.com/questions/1471636/im-new-in-java-what-to-read – froadie

1
private String go() 
{ 

    Input in = new Input(); 
    System.out.print("Enter Number: "); 
    return in.nextLine(); 
    long number = in.nextLong(); 
    String Palindrome = Long.toString(number); // converts the long into a string 
    String newAnswer = reverse(Palindrome); 
    String anotherAnswer = reverseCheck(Palindrome,newAnswer); 
    System.out.println("This is a Palindrome" + Palindrome); 
} 

...에 관계없이 작동 여부의 "이것은 회문이다"출력합니다. 나는 당신이 기능이 어떻게 작동하는지 이해하지 못한다고 생각한다.

1

reverseCheck() 메서드에서 void를 반환하려고하지만 반환 형식이 String으로 나열되어 있습니다. System.out.println()은 void를 반환합니다. 단지 화면에 출력합니다. 오히려 문자열을 "회문입니다"또는 "회문이 아닙니다"

0
return System.out.println("It is not a palindrome"); 

println 아무 것도 반환하지 않습니다.

0

StringBuffer를 역방향 방법은 그래서이 작동합니다 있습니다

public static boolean checkForPalindrom(String s){ 
    StringBuffer buf=new StringBuffer(s); 
    return s.equals(buf.reverse().toString()); 
} 
0

이 당신의 코드 (이미 다른 사람에 의해 설명 된 것)에 어떤 문제가 있는지 설명하는 것이 아니라, 왜 대신를 사용하지 마십시오 :

public class SO { 
    public static void main(String[] args) { 
     System.out.println(isPalindrome("aaaaaa")); 
     System.out.println(isPalindrome("aaazzaa")); 
     System.out.println(isPalindrome("aaazaaa")); 
     System.out.println(isPalindrome("zzzbb")); 
     System.out.println(isPalindrome("zzbb")); 
    } 

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

     return true; 
    } 
} 
2

다음과 같이 만들었습니다. 먼저 사용자로부터 입력 한 다음 문자열의 역순으로 입력하십시오.다음은 사용자 문자열과 반대 문자열을 비교합니다. "Palindrom"이 아닌 경우 "Palindrom"을 인쇄하십시오. 단지 "ignoreCase"를 추가했습니다. ;)

public static void main(String[] args) 
{ 
    System.out.print("Enter the word: "); 
    Scanner userInput = new Scanner(System.in); 
    String word = userInput.nextLine(); 

    String drow = new StringBuilder(word).reverse().toString(); 

    if(word.equalsIgnoreCase(drow)) 
    { 
     System.out.print("Palindrom"); 
    } 
    else if (!word.equalsIgnoreCase(drow)) 
    { 
     System.out.print("Not Palindrom"); 
    } 
} 
+1

좋아, 죄송합니다. 덧글을 추가했습니다. – rav3n

관련 문제