簡體   English   中英

爪哇檢查回文

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM