-1

我刚刚使用 eclipse 在 java 中编写了一个简单的回文程序。我收到了这个错误

 for(int i=0;i<len-1;i++)
    {
        if(inputString[i]==inputString[(len-i-1)] //error here "The type of the expression must be an array type but it resolved to String"
        {
            palindrome = true;
            i++;
        }
        else
        {                    
            break;

        }
    }
4

2 回答 2

8

StringJava 中的 s 不是字符数组,它们是Strings。尝试使用inputString.charAt(i).

于 2013-09-20T05:34:14.090 回答
3

在 Java 中有一个 String 类;它不能像数组一样对待。正如 chrylis 所说,要么使用 charAt() 方法,要么使用 toCharArray() 方法将其转换为 char 数组。

看起来您在检测是否存在回文方面存在错误。如果第一个和最后一个字符匹配,回文设置为 true。但是,如果接下来的两个字符不匹配,那么它会转到条件的 else 分支,在那里它将退出 for 循环。但是,回文仍然设置为真。您甚至可以在 for 循环之前将回文设置为 true,然后只有在字符串不是回文时才会设置为 false。

对于您想要的比较:

palindrome = true;
for(int i=0; i<len-1; i++)
{
    if(inputString.charAt(i)==inputString.charAt(len-i-1))
    {
        i++;
    }
    else
    {   
        palindrome = false;                 
        break;
    }
}
于 2013-09-20T05:39:22.367 回答