本帖最后由 jie546543 于 2011-11-02 14:21:09 编辑

解决方案 »

  1.   

    需要用到commons-lang.jar包 if (ss.toString().equals(StringUtils.reverse(ss.toString()))) {
    System.out.println(ss);
    }
      

  2.   


    if (ss.toString().equals(ss.reverse().toString())) {
        System.out.println(ss);
    }
      

  3.   

    不是,你这个循环就写错了。你会发现sm一直append到12,sd一直append到31,所以肯定得不到结果的。
      

  4.   

    不会的,我有加这一句来初始化:
    StringBuffer sm= new StringBuffer("");
      

  5.   

    自己找到问题所在了哈,跟funfenffun所提示的一样。原来是因为StringBuffer没有equals()方法,所以要toString()一下。
    //String才有equals()方法。
      

  6.   


    public class kkk{
        public static void main(String args[]){        for (int i=2011;i<=9999;i++) {
                
                StringBuffer sy= new StringBuffer("");
                sy=sy.append(i);
                
                for (int j=1;j<=12;j++) {
                StringBuffer sm= new StringBuffer("");
                if (j<10) {
                    sm=sm.append("0").append(j);
                } 
                else 
                {
                    sm=sm.append(j);    
                }
                
                    for (int k=1;k<=31;k++) {
                        StringBuffer sd= new StringBuffer("");
                        if (k<10) {
                            sd=sd.append("0").append(k);
                        } 
                        else 
                        {
                            sd=sd.append(k);    
                        }
                    
                        StringBuffer ss= new StringBuffer("");
                        ss=ss.append(sy).append(sm).append(sd);
                        //ss是StringBuffer 它并不像String 重写了 equals方法 所以先把他们都转化成
                        //String 类型 再进行equals方法!
                        String ssString = ss.toString();
                        String reverse = ss.reverse().toString();
                        if (ssString.equals(reverse)) {
                            System.out.println(ss);
                        }
                    }
                }
                
            }
            
        }    
        
    }
      

  7.   

      if (j<10) {
                    sm=sm.append("0").append(j);
                } 
    这句是什么作用
      

  8.   

    最后的完整程序(可以计算闰年平年):
    import java.io.*;
    public class kkk{
    public static void main(String args[]) throws IOException  {
    BufferedWriter file = new BufferedWriter(new FileWriter("D:\\Test.txt"));
    int _k;
    for (int i=2011;i<=9999;i++) {

    StringBuffer sy= new StringBuffer("");
    sy=sy.append(i);

    for (int j=1;j<=12;j++) {
    if (j==1||j==3||j==5||j==7||j==8||j==10||j==12){ _k=31; }
    else {
    if (j==2) {
    if (i%4==0) { _k=29; }
    else { _k=28; }
    }
    else { _k=30; }
    }
    StringBuffer sm= new StringBuffer("");
    if (j<10) { sm=sm.append("0").append(j); } 
    else { sm=sm.append(j); }


    for (int k=1;k<=_k;k++) {
    StringBuffer sd= new StringBuffer("");
    if (k<10) { sd=sd.append("0").append(k); } 
    else { sd=sd.append(k); }
    StringBuffer ss= new StringBuffer("");
    ss=ss.append(sy).append(sm).append(sd);
    if (ss.toString().equals(ss.reverse().toString())) {
    System.out.println(ss);
    file.write(ss.toString());
    file.newLine();
    }
    }
    }

    }
    file.close();
    }

    }