我想获得这样的一个方法:当所传过来的值为“A”时,返回的值为“B”。
当所传过来的值为“C”时,返回的值为“D”。以此类推。
当所传过来的值为“Z”时,返回的值为“AA”。
当所传过来的值为“AA”时,返回的值为“AB”。
当所传过来的值为“AZ”时,返回的值为“BA”。
当所传过来的值为“BA”时,返回的值为“BB”。以此类推。当传过来的值为“ZZ”时,没有返回值。因为是新手,所以写起来有些困难。请指教!

解决方案 »

  1.   

    Here is the algorithm:if (str.length == 1 && !str.equals("Z"))
        strOutput = new String((str.charAt(0)+1));
    else if ((str.length == 1 && str.equals("Z")))
        strOutput = "AA"
    else if ...
    ...I think it's not hard, right?
      

  2.   

    用char ctmp;
    ctmp++;来处理
      

  3.   

    確實不難 用IF ELSE和樓上所說的就可以了。
      

  4.   

    使用IF可以
    判断 传过来的值的位数 存在以下几种情况(可以把传过来的值转化成char[]进行处理)
    if(str.length==1)
    {
      if(str[0]=='z')
        {...}
      else
        {...}
    }
    else if(str.length==2)
    {
       if(str[1]=='z')判断最后一位是不是"z"
       {str[0]++;str[1]='A'}
       else
       {str[1]++;}
    }
    else
    {...}
      

  5.   

    没有学过java 
    基础不扎实,所以有点困难。“用char ctmp; 
    ctmp++;来处理”这个语句怎么用 能否讲解以下
      

  6.   

    如果从进位的角度来考虑确实不简单,不过如果用替换来做还是不难。
    public static String convert(String org){
    org = org.toUpperCase();
    if(org.length() == 1){
    if(org.charAt(0) != 'Z'){
    return ""+((char)(org.charAt(0)+1));
    }else{
    return "AA";
    }
    }else if(org.length() == 2 && org != "ZZ"){
    if(org.charAt(1) != 'Z'){
    return org.charAt(0)+""+(char)(org.charAt(1)+1);
    }else{
    return (char)(org.charAt(0)+1)+""+'A';
    }
    }
    return null;
    }
      

  7.   

    其实我想应该有个普适算法,就是用进位的思想来做。只不过这里是26进制的。不过我试了一下,做不出来。因为这里有特殊性。如果说A当成0的话,Z+1为AA,那岂不是00,如果A当成1的话,Z+1就是11,也不对。(Z+1应该是10才对)所以跟我们理解的进位的原则不太一样。
      

  8.   

    /**
     * 凑合写了一个,这个应该可以看懂了吧?
     */
    package houlei.test;/**
     * 
     *
     * 该类创建于 2008-9-9 上午10:33:05
     * @version 1.0.0
     * @author 侯磊
     */
    public class G {

    public static void main(String args []){
    System.out.println("A"+"\t"+getNext("a"));
    System.out.println("Z"+"\t"+getNext("z"));
    System.out.println("AA"+"\t"+getNext("aa"));
    System.out.println("AZ"+"\t"+getNext("aZ"));
    System.out.println("BA"+"\t"+getNext("BA"));
    System.out.println("ZZ"+"\t"+getNext("ZZ"));
    }
    public static String getNext(String arg){
    if(arg==null)return null;
    int len = arg.length();
    if(len>2 || len<=0)return null;
    arg=arg.toUpperCase();
    if(len==2){
    if(arg.equals("ZZ"))return null;
    char [] a = arg.toCharArray();
    int dig = a[1]=='Z'?1:0;//进位数
    a[1]=(char)((a[1]+1-'A')%(26)+'A');
    a[0]=(char)(a[0]+dig);
    return new String(a);
    }
    //只有一位的情况
    if(arg.charAt(0)=='Z')return "AA";
    return new String(new char[]{(char)(arg.charAt(0)+1)});
    }
    }
      

  9.   

    /**
     * 凑合写了一个,这个应该可以看懂了吧?
     */
    package houlei.test;/**
     * 
     *
     * 该类创建于 2008-9-9 上午10:33:05
     * @version 1.0.0
     * @author 侯磊
     */
    public class G {

    public static void main(String args []){
    System.out.println("A"+"\t"+getNext("a"));
    System.out.println("Z"+"\t"+getNext("z"));
    System.out.println("AA"+"\t"+getNext("aa"));
    System.out.println("AZ"+"\t"+getNext("aZ"));
    System.out.println("BA"+"\t"+getNext("BA"));
    System.out.println("ZZ"+"\t"+getNext("ZZ"));
    }
    public static String getNext(String arg){
    if(arg==null)return null;
    int len = arg.length();
    if(len>2 || len<=0)return null;
    arg=arg.toUpperCase();
    if(len==2){
    if(arg.equals("ZZ"))return null;
    char [] a = arg.toCharArray();
    int dig = a[1]=='Z'?1:0;//进位数
    a[1]=(char)((a[1]+1-'A')%(26)+'A');
    a[0]=(char)(a[0]+dig);
    return new String(a);
    }
    //只有一位的情况
    if(arg.charAt(0)=='Z')return "AA";
    return new String(new char[]{(char)(arg.charAt(0)+1)});
    }
    }
      

  10.   

    super_marshal 
    preferme谢谢2位!
      

  11.   

    qj123456_0 
    preferme 刚才打错了!
    谢谢2位!!!感激不尽!