如下 
a b c .... z aa ab ac .... az ba bb bc 
.... yz za zb zc .... zz aaa aab aac .... 
分别代表以下编号: 
1 2 3 .... 26 27 28 29 .... 52 53 54 55 
.... 676 677 678 679 .... 702 703 704 705 .... 
写个函数,完成从一个正整数到这种字符串之间的转换。

解决方案 »

  1.   

    static String convertToStr(int num){
     
      if(num>=1 && num<= 26)
      {
      return  Character.toString((char)(num - 1 + 'a'));
      }

      int zint,yint;
      zint = num/26; //整数部分
      yint = num%26; //余数部分
     
      char zchar, ychar;
     
      zchar = (char) (zint + 'a' - 1); 
      ychar = (char) (yint + 'a' - 1); 
     
      if(yint == 0){ //余数为0
      zchar -=1;
      ychar = 'z';
      }
     
      return  new String( Character.toString(zchar) + Character.toString(ychar) );
     }只到702,超过的仍需要写函数判断
      

  2.   

    我来写一个吧,什么整数都可以(包括负数),如果是0,就返回Not Defined,因为你这种方法本来就没有定义0。
    public class TestNumStr {
        static char sBit[]={'z','a','b','c','d','e','f','g','h','i','j','k','l','m','n'
                ,'o','p','q','r','s','t','u','v','w','x','y',};
        public static String num2Str(int n){
            if(n==0)
                return "Not Defined!";
            String s="";
            String sign=n>0?"":"-";
            n=n>0?n:-n;
            while(n>0){
                s+=sBit[n%26];
                n/=26;
            }
            StringBuffer sb=new StringBuffer(s);
            sb.reverse();
            s=sb.toString();
            s=sign+s;
            return s;
        } 
        public static void main(String[] args){
            System.out.println(num2Str(705));
            System.out.println(num2Str(1024));
            System.out.println(num2Str(-362));
            System.out.println(num2Str(0));
        }
    }
      

  3.   

    wilowind(杂而不精) ( ) 信誉:100  2006-07-10 18:13:00  得分: 0  
     
        有难度,26进制
     -------------------------------
    同意这个,不过1—9不是用1-9表示,而是用a-j来表示。
    0 的问题,这里就认为是 . 吧,实际认为是点儿不太正确!