我的程序应该检查输入是否是回文。给定的程序编译并成功运行。程序正确打印反向字符串但输出错误。请帮忙!
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
答案 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 ==中检查对象的地址不是内容 有关详细信息,请查看以下主题