本帖最后由 h736353022 于 2010-11-16 15:24:25 编辑

解决方案 »

  1.   

    char[] ch是对象来着,对象岂能直接用==进行比较内容。==操作比较的是对象的内存地址
      

  2.   


    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"); }}
      

  3.   

    这位大哥,看清楚些,不是比较char型数组,而是比较两个字符。
      

  4.   

    这个
    len[i]是char型的,
    用==比较没啥问题,
    不清楚你们什么逻辑用这个吧,省得写这多判断
    final String a = "abba";
    System.out.println(a.equals(new StringBuffer(a).reverse().toString()));
      

  5.   

    len[1].equals(len[2])还有可以用StringBuffer的reverse()方法。
      

  6.   

    final String a = "abba";
            System.out.println(a.equals(new StringBuffer(a).reverse().toString()));
    原来这种方式更省事,谢谢指点。