Java:如何在字母中增加

时间:2011-05-19 14:50:57

标签: java

我将在Java中读取两个字符串。我想确定它的下一个增量是什么。以下是增量规则。

AA -> AB -> AC -> ... -> AZ -> BA -> BB -> ... -> ZZ -> AA

因此,如果我在AC阅读,我会打印出AD

修改

我可以增加一个字符,例如System.out.println((char) ('C' + 1));。所以我在考虑解析字符串,获取单个字符,只增加或减少char的值。环绕是什么让我,像AZ - > BA。不知道到底有什么最好的方法。你有什么想法

4 个答案:

答案 0 :(得分:4)

public static String increment(final String p_source) {
    final int first = (p_source.charAt(0) - 'A') * 26;
    final int second = p_source.charAt(1) - 'A';

    final int next = (first + second + 1) % (26*26); 

    return new String(new byte[] {(byte)(next / 26 + 'A'), (byte)(next % 26 + 'A')});
}

答案 1 :(得分:1)

如果它的2个字母的东西那么

public static String getString(String str){
  String str1 = str;
   str = str.ToLower(); 
  char c1 = str.charAt(0);
  char c2 = str.charAt(1);
  if(c2<Z){
     c2 = c2+1;
  }else{
     c2= 'A';
     if(c1 < z){
      c1 = c1+1;
     }else{
       //you put this thing
     }
  }
     //      return a string concating char
}

注意:只是一个演示,给你基本的想法

答案 2 :(得分:1)

你可以从每对中获取第二个字符并将其转换为ascii,然后将ascii压缩为1并将其连接回第一个字符。该站点向您展示如何在Java中将char转换为ascii:http://www.roseindia.net/java/java-conversion/CharToASCIIi.shtml

答案 3 :(得分:1)

你有26封信...... 所以你的范围是26 * 26

将其解析为int,然后计算mod(26 * 26)

AA = 0 * 26 ^ 0 + 0 * 26 ^ 1 = 0

BA = 0 * 26 ^ 0 + 1 * 26 ^ 1 = 26

等...

然后您可以播放该号码并使用这些规则进行解析