检查回文的程序

时间:2010-02-17 16:10:42

标签: java

我正在尝试编写一个将long转换为字符串并检查它是否是回文的程序,到目前为止我写了以下内容,但它给了我一个不兼容的类型错误,我似乎无法找到导致它的原因。 :S 任何帮助将非常感谢:)

错误发生在第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();
 }
}

9 个答案:

答案 0 :(得分: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()方法存在逻辑错误。无论是否有效,都会打印出“这是一个回文”...

答案 1 :(得分:2)

我在下面做了这样的事情。首先,从用户输入,然后反转字符串。接下来比较用户字符串和反向用户字符串,如果是相同的 - &gt;打印&#34; Palindrom&#34;,如果不是&#34;不是Palindrom&#34;。添加&#34; ignoreCase&#34;以防万一。 ;)

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");
    }
}

答案 2 :(得分:1)

嗯,首先,你正在调用System.out.println(),它返回void,并尝试在reverseCheck()函数中将其作为String返回。决定:您要打印结果,还是将其返回(可能是bool)?

答案 3 :(得分:1)

当你的函数签名表明你想要返回一个String时,你不能返回System.out.println ...你在行上有另外一个语法错误

result = new Character(newAnswer...

newAnswer无法在该范围内解决...您是否使用像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])));
    } 
}

答案 4 :(得分: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);
}

编译器不应该让你在返回后放置无法访问的代码。我不认为你理解函数是如何工作的。

答案 5 :(得分:1)

在你的reverseCheck()方法中,你试图返回一个void但你有返回类型列为String。 System.out.println()返回void - 它只是打印到屏幕上。相反,返回字符串“它是回文”或“它不是回文”

答案 6 :(得分:0)

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

println不会返回任何内容。

答案 7 :(得分:0)

StringBuffer有一个反向方法,所以这应该有效:

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

答案 8 :(得分: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;
    }
}