2014-10-11 56 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?

相关问题