有人可以发现这个java程序中的错误

时间:2014-10-11 10:57:55

标签: java string palindrome

我的程序应该检查输入是否是回文。给定的程序编译并成功运行。程序正确打印反向字符串但输出错误。请帮忙!

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

3 个答案:

答案 0 :(得分: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中的Object类中定义,用于检查业务逻辑定义的两个对象的相等性

答案 1 :(得分:0)

这里更改此行 如果(revStr == STR) 至 如果(revStr.equals(str))

事情是==检查参考平等

Object.equals是java中给出的用于定义对象相等性的方法 String类重写并检查两个Strings是否表示相同的char数组

答案 2 :(得分:0)

你的if条件应该是这样的

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?