字符串回文问题,请大家指点
(2)按如下的要求编写程序:检查输入的字符串是否为“回文”。所谓“回文”是指当一个字符串正序读和逆序读时都一样。比如:“level”、“123321”、“我爱我”、“madam”等都是“回文”字符串。(教材P126页6-5题)
实验要求:利用命令行参数输入一个字符串,判断是否为回文
class Lizhi{
public static void main(String args[]){
for(int i=0;i <args.length;i++){
System.out.print( " "+args[i]);
StringBuffer strBuff=new StringBuffer(args[i]);
if(strBuff==strBuff.reverse())
System.out.print( "是回文! ");
else
System.out.print( "不是回文! ");
}
}
}
我编译: javac Lizhi.java
运行:java Lizhi 123
输出 123是回文
这个不对呀...怎么不输出 123不是回文...该如何改正
------解决方案--------------------if(strBuff==strBuff.reverse())
这一句有问题啊,strBuff是一个引用,你用==,实际上==两边是相同的引用,reverse方返回一个引用,跟你的原来得仍然一样啊
建议你用equals()或者是toString后equals()
总是不要用==,这是判断地址的,不是比较值的
------解决方案--------------------class LiZhi{
public static void main(String args[]){
for(int i=0;i <args.length;i++){
System.out.print( " "+args[i]);
StringBuffer strBuff=new StringBuffer(args[i]);
if(strBuff.toString().equals(strBuff.reverse().toString()))
System.out.print( "是回文! ");
else
System.out.print( "不是回文! ");
}
}
}
------解决方案--------------------用equals()方法进行判断就不会出现你说的那种错误了
这是因为equals()方法在判断两个String的内容是否一致
而==在判断两个String的引用位置是否一致(也就是在内存中指向的地址是否一致)
------解决方案--------------------if(strBuff==strBuff.reverse())
->
if(args[i]==strBuff.reverse().toString().intern())