有人可以指出我的计划中的错误吗?
输出总是:“它不是回文”
String newstr="";
for(int j=length-1;j>0;j--)
{
char m=str.charAt(j);
newstr=newstr+m;
}
if(newstr.equals(str) )
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
提前感谢:)
答案 0 :(得分:3)
首先,使用String.equals()
来比较字符串而不是==
。
if(newstr.equals(str))
此外,字符串索引从0开始,因此您需要:
for(int j=length-1;j>=0;j--)
这两个修复都应该有效。
答案 1 :(得分:3)
if(newstr==str)
应该是
if ( newstr.equals( str ) )
并阅读对象比较。你有效地比较了两个指针,而不是字符串内容。
当然,使用Java 5及其后,你可以做到
new StringBuilder( str ).reverse().toString().equals( str );
干杯,
答案 2 :(得分:2)
数组的索引从0开始。我猜你应该使用
for(int j=length-1;j>=0;j--)
而不是
for(int j=length-1;j>0;j--)
答案 3 :(得分:1)
==运算符检查两个引用是否指向同一个对象。 .equals()方法实际上会检查字符串的内容。
所以你的代码必须是
if(newstr.equals(str))
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
答案 4 :(得分:0)
==
测试参考相等性。
.equals()
测试价值平等。
因此,如果您确实想要测试两个字符串是否具有相同的值,则应使用.equals()
(在少数情况下,您可以保证具有相同值的两个字符串将由同一对象表示
这将是最终的代码。阅读string comparison in java
String newstr="";
for(int j=length-1;j>0;j--)
{
char m=str.charAt(j);
newstr=newstr+m;
}
if(newstr.equals( str ) )
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
答案 5 :(得分:0)
public static boolean isPaliandrome(String str) {
StringBuilder lettersBuff = new StringBuilder(str);
String str_inverse = lettersBuff.reverse().toString();
char[] charArrayInverse = str_inverse.toCharArray();
boolean isPaliandrome = false;
String caracInverseConverted = new String(charArrayInverse);
if (str.equals(caracInverseConverted)) {
isPaliandrome = true;
}
return isPaliandrome;
}