我昨天问了一个关于回文和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);
}
}
}
}
答案 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());
}
尝试这种简单的递归方法。