字符串回文问题,请大家指点

xiangdeweiwangfengg 2007-05-17 10:21:17
(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不是回文...该如何改正
...全文
390 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
talent_marquis 2007-05-18
  • 打赏
  • 举报
回复
用equals()方法进行判断就不会出现你说的那种错误了

这是因为equals()方法在判断两个String的内容是否一致

而==在判断两个String的引用位置是否一致(也就是在内存中指向的地址是否一致)
beibeiG 2007-05-18
  • 打赏
  • 举报
回复
tanlingyun(未能避开)


================================

正解
malligator 2007-05-18
  • 打赏
  • 举报
回复
if(strBuff==strBuff.reverse())

->

if(args[i]==strBuff.reverse().toString().intern())
tanlingyun 2007-05-17
  • 打赏
  • 举报
回复
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("不是回文!");
}
}
}
For_suzhen 2007-05-17
  • 打赏
  • 举报
回复
if(strBuff==strBuff.reverse())
这一句有问题啊,strBuff是一个引用,你用==,实际上==两边是相同的引用,reverse方返回一个引用,跟你的原来得仍然一样啊
建议你用equals()或者是toString后equals()
总是不要用==,这是判断地址的,不是比较值的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧