Java Palindrome程序(1错误)

时间:2015-02-09 02:12:29

标签: java palindrome

我昨天问了一个关于回文和Java的问题:

Java Palindrome Program (am I on track)?

到目前为止,在你的帮助下我取得了一些进展(非常感谢你)。在我测试代码之前,我只需要帮助一件事。我正在使用Eclipse,并且我在一行中收到错误(我还将错误包含在下面的代码中作为注释)。我一直得到一个“无法在数组类型String []”上调用charAt(int)。

任何人都知道这里发生了什么?自从我使用Java以来​​已经有一段时间了。在大约12个月前的C.S. One中使用它,然后我转到数据结构中的C ++,然后是下一课程中的机器代码和汇编语言。这是代码(我还在代码中的注释中包含了错误)。非常感谢:

public class Palindrome 
{

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


public static void main( String [] theWord ) 
{
        int leftPointer = 0;
        int rightPointer = theWord.length - 1;

        for ( int i = 0; i < theWord.length / 2; i++ ) {
            while (leftPointer >= rightPointer) {
                if ( theWord.charAt(i) == theWord.charAt (theWord.length - i - 1) ) { // Error: Cannot invoke charAt(int) on the array type String[]
                    leftPointer++;
                    rightPointer--;
                }
                System.out.println(theWord);
            }
        }
}

}

5 个答案:

答案 0 :(得分:1)

您正在尝试访问String [](传递给您的程序的参数的String数组)上的charAt(),但您需要在String上访问它。我的世界建议如下:

if ( theWord[i].charAt(0) == theWord[theWord.length - i - 1].charAt (0) ) {

这可能对你有帮助。

答案 1 :(得分:0)

charAt(int index)适用于String,而不是String数组。你的程序想要决定一个字符串是否是回文,如&#34; abcba&#34;。而不是检查一串字符串是否都是回文,对吧?例如{&#34; abcba&#34;,&#34; bbc&#34;,&#34; aba&#34;}。

答案 2 :(得分:0)

在调用方法.length()

后忘记了()

答案 3 :(得分:0)

在Java中(如在C ++中),程序接收参数列表,即字符串数组。因此,您的课程应如下所示:

public class Palindrome 
{
  public static boolean isPalindrome( String theWord )  
  {    
    for ( int i = 0; i < theWord.length( ); i++ ) {
      if ( theWord.charAt(i) != theWord.charAt (theWord.length() - i - 1) ) {
        return false;
      }
    }
    return true;
  }


  public static void main( String [] args ) 
  {
    String theWord = args[0];  // first word passed to the program
    boolean isPalindrom = Palindrome.isPalindrome(theWord);
    System.out.println(theWord + " is" + ( isPalindrom ? "" : " NOT " )   + " a Palindrome." ); 
  }

}

答案 4 :(得分:0)

public static boolean isPalindrom(String value) {
    if (value == null || value.length()==0 || value.length()==1) {
        return true;
    }
    if(value.charAt(0)!=value.charAt(value.length()-1)) {
        return false;
    }
    StringBuilder newValue =new StringBuilder(value);
    newValue = new StringBuilder(newValue.substring(1, newValue.length()));
    newValue = new StringBuilder(newValue.substring(0, newValue.length()-1));
    return isPalindrom(newValue.toString());
}

尝试这种简单的递归方法。