判断字符串对称性(高手请进) 本帖最后由 h736353022 于 2010-11-16 15:24:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char[] ch是对象来着,对象岂能直接用==进行比较内容。==操作比较的是对象的内存地址 public class test { private String str1 = null; public test(String str) { this.str1 = str; int ch1 = str.length(); // 取字符串前半段和半段 //这里不要减一,下同,具体参见String.substring(start,end)方法 char[] len1 = str.substring(0, str.length() / 2).toCharArray(); char[] len2 = str.substring(str.length() / 2, str.length()) .toCharArray(); // 取字符串前半段第一个字符和后半段最后一个字符 int i = 0; int j = str.length() / 2 - 1; // 判断字符串是否为0或1 if ((ch1 == 0) || (ch1 == 1)) { System.out.println("不对称"); } else { // 判断字符串是否双数 if ((ch1 % 2) == 0) { //加上判断语句,防止数组越界,并且把字符比较放到判断越界后面 for (; (i<len1.length) && (j>=0) && (len1[i]==len2[j]); i++, j--) { if (j == 0) { System.out.println("对称"); } } } else { System.out.println("不对称"); } } } public static void main(String[] args) { new test("abba"); }} 这位大哥,看清楚些,不是比较char型数组,而是比较两个字符。 这个len[i]是char型的,用==比较没啥问题,不清楚你们什么逻辑用这个吧,省得写这多判断final String a = "abba"; System.out.println(a.equals(new StringBuffer(a).reverse().toString())); len[1].equals(len[2])还有可以用StringBuffer的reverse()方法。 final String a = "abba"; System.out.println(a.equals(new StringBuffer(a).reverse().toString()));原来这种方式更省事,谢谢指点。 关于Java单链表的疑惑 为什么我输出写那么多东西 输出的 没那么多啊 ?有代码 帮忙看看 我是新人 问大家一个java问题 SOS 关于gettext 求解:给出一个数,求出一个集合,这个集合的所有数字之和等于这个数 swing做的登陆界面怎么保存用户名和密码? 怎么配置jdk1.4.2_06, 关于JTable的问题。 select seq_aa.nextval from dual;我在jdbc里如何把该直取回并变成long型? java中碰到对地址的操作怎么办? 关于SwingWorker和Swing显示的一些问题 怎样在Eclipse下配置Tomcat,步骤写详细一点
public class test { private String str1 = null; public test(String str) {
this.str1 = str;
int ch1 = str.length();
// 取字符串前半段和半段
//这里不要减一,下同,具体参见String.substring(start,end)方法
char[] len1 = str.substring(0, str.length() / 2).toCharArray();
char[] len2 = str.substring(str.length() / 2, str.length())
.toCharArray(); // 取字符串前半段第一个字符和后半段最后一个字符
int i = 0;
int j = str.length() / 2 - 1;
// 判断字符串是否为0或1
if ((ch1 == 0) || (ch1 == 1)) {
System.out.println("不对称");
} else {
// 判断字符串是否双数
if ((ch1 % 2) == 0) {
//加上判断语句,防止数组越界,并且把字符比较放到判断越界后面
for (; (i<len1.length) && (j>=0) && (len1[i]==len2[j]); i++, j--) {
if (j == 0) {
System.out.println("对称");
}
}
} else {
System.out.println("不对称");
} } } public static void main(String[] args) {
new test("abba"); }}
len[i]是char型的,
用==比较没啥问题,
不清楚你们什么逻辑用这个吧,省得写这多判断
final String a = "abba";
System.out.println(a.equals(new StringBuffer(a).reverse().toString()));
System.out.println(a.equals(new StringBuffer(a).reverse().toString()));
原来这种方式更省事,谢谢指点。