[英]Java- Check palindrome
有人可以指出我程序中的錯誤嗎?
輸出始終為:“這不是回文”
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");
提前致謝:)
首先,使用String.equals()
比較String而不是==
。
if(newstr.equals(str))
另外,字符串索引以0開頭,因此您需要:
for(int j=length-1;j>=0;j--)
兩種修復都應該起作用。
if(newstr==str)
應該是
if ( newstr.equals( str ) )
並仔細閱讀對象比較。 您正在有效地比較兩個指針,而不是字符串內容。
當然,從Java 5開始,您可以
new StringBuilder( str ).reverse().toString().equals( str );
干杯,
數組的索引從0開始。我猜你應該使用
for(int j=length-1;j>=0;j--)
代替
for(int j=length-1;j>0;j--)
==操作員檢查兩個參考點是否都指向同一對象。 .equals()方法實際上將檢查字符串的內容。
所以你的代碼必須是
if(newstr.equals(str))
System.out.println("it is a palindrome");
else
System.out.println("it is not a palindrome");
==
測試引用相等性。
.equals()
測試值是否相等。
因此,如果您實際上要測試兩個字符串是否具有相同的值,則應使用.equals()
(在少數情況下,可以保證具有相同值的兩個字符串將由相同的對象表示)
這將是最終代碼。 閱讀有關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");
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.