2014-10-11 28 views
-1

我的程序應該檢查輸入是否是迴文。給定的程序編譯併成功運行。程序正確輸出反向字符串,但輸出錯誤。請幫忙!有人可以在這個Java程序中發現錯誤

class Palindrome 
{ 
    public static void main(String[] args) 
    { 
     String str,revStr=""; 
     System.out.println("Enter something to check if it is a palindrome"); 
     Scanner sn = new Scanner(System.in); 
     str = sn.nextLine(); 
     for(int i=str.length()-1;i>=0;i--) 
     { 
      revStr+=Character.toString(str.charAt(i)); 
     } 
     if(revStr==str) 
     { 
     System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
     } 
     else 
     { 
      System.out.println("The string "+str+" is not a Palindrome"); 
      System.out.println(revStr); 
     } 
    } 
} 

輸出:

Enter something to check if it is a palindrome 
nitin 
The string nitin is not a Palindrome 
nitin 
+1

使用'revStr.equals(str)'而不是'==' – PoByBolek 2014-10-11 11:01:34

回答

0

這裏改變這一行 如果(revStr == STR) 要 如果(revStr.equals( STR))

的事情是==檢查引用相等

的Object.Equals是定義你的對象平等 String類會覆蓋併爲您在java中給出的方法,如果兩個字符串represen T有相同的字符數組

0

你的答案在這裏:

import java.util.Scanner; 

class Palindrome 
{ 
    public static void main(String[] args) 
    { 
     String str,revStr=""; 
     System.out.println("Enter something to check if it is a palindrome"); 
     Scanner sn = new Scanner(System.in); 
     str = sn.nextLine(); 
     for(int i=str.length()-1;i>=0;i--) 
     { 
      revStr+=Character.toString(str.charAt(i)); 
      System.out.println("revStr" + revStr); 
     } 
     if(revStr.equals(str))//Don't use == 
     { 
     System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
     } 
     else 
     { 
      System.out.println("The string "+str+" is not a Palindrome"); 
      System.out.println(revStr); 
     } 
    } 
} 

「==」操作

在Java中,當「==」操作符是用來比較2個對象它會檢查對象是否指向內存中的相同位置。換句話說,它檢查2個對象名是否基本上是對同一個內存位置的引用。

Equals()方法在Java對象類中定義並用於檢查由業務邏輯定義的兩個對象的平等

0

你如果條件應該是這樣的

if(revStr.equals(str)){ 
System.out.println("The string "+str+" is a Palindrome"); 
     System.out.println(revStr); 
} 

因爲Java中的==檢查對象的更多細節內容沒有在 地址檢查以下螺紋

What is the difference between == vs equals() in Java?

相關問題