黑马程序员技术交流社区
标题:
判断一个字符串是否是对称字符串的疑问
[打印本页]
作者:
凝聚
时间:
2013-12-13 11:46
标题:
判断一个字符串是否是对称字符串的疑问
本帖最后由 凝聚 于 2013-12-14 12:50 编辑
package two;
//判断一个字符串是否是对称字符串
//例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
import java.util.*;
import java.io.*;
public class di2 {
public static void main(String[] args) throws Exception{
System.out.println("请输入字符");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=null;
while((s=br.readLine())!=null)
{
if("over".equals(s))
break;
System.out.println(s+":"+panduan(s));
}
}
public static boolean panduan(String str)
{
if(str==null)
return false;
for(int i=0;i<str.length()/2;i++)
{
if(str.charAt(i)!=str.charAt(str.length()-i-1))
{
return false;
}
}
return true;
}
}
这段代码运行后,什么都不输入可是它显示TRUE是怎么回事啊?
作者:
侠客梦的懒猫
时间:
2013-12-13 12:08
我们可以来分析一下这个程序,当我们什么也不输入,直接按回车时,输出的是true,这个绝对是你panduan(String str)函数的作用。
那么可以接着测试panduan(String str)
第一步:
在panduan(String str)函数中加入两个语句
System.out.println(str==null);
System.out.println(str.length());
当加完后,第一个输出false,第二个输出0,,这样结果不就明了。
第二步:
既然第一个输出false,说明
if(str==null)
return false;
这个不执行
既然第二个输出0,说明不执行 for,直接返回true。
解决办法:
在你输入时,加一个检测。
希望能帮助你
作者:
凝聚
时间:
2013-12-14 10:35
侠客梦的懒猫 发表于 2013-12-13 12:08
我们可以来分析一下这个程序,当我们什么也不输入,直接按回车时,输出的是true,这个绝对是你panduan(Stri ...
请问该怎么改啊?
作者:
侠客梦的懒猫
时间:
2013-12-14 12:04
在while中加入
if(s.length()==0)
{
System.out.println("帅哥,给点面子,别一个字符都不输啊!");
break;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2