2011-05-19 61 views
0

我將以Java中兩個字符的字符串閱讀。我想確定下一個增量是什麼。以下是增量規則。Java:如何在文字中增加

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

所以,如果我在AC閱讀,我會打印出AD

編輯

我可以做一個字的增量,這樣System.out.println((char) ('C' + 1));。所以我在考慮解析字符串,獲取單個字符,只是增加或減少char的值。環繞是什麼讓我,如​​- >BA。不知道什麼是實現這一目標的最佳途徑。你有什麼想法

+5

好吧,那麼你到目前爲止嘗試過什麼? – 2011-05-19 14:52:07

+0

@Oil:我可以增加一個字符,像這樣'System.out.println((char)('C'+ 1));'。所以我在考慮解析字符串,獲取單個字符,只是增加或減少'char'的值。環繞是什麼讓我,像'AZ' - >'BA'。不知道什麼是實現這一目標的最佳途徑。你有什麼想法 – 2011-05-19 14:56:51

+0

這個問題已經在這裏得到解答: http://stackoverflow.com/questions/342052/how-to-increment-a-java-string-through-all-the-possibilities – Miquel 2011-05-19 14:54:57

回答

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')}); 
} 
+0

非常感謝。它工作完美。 – 2011-05-19 16:02:03

+0

告訴你這不是那麼複雜:) – 2011-05-19 16:11:47

+1

@Yochai:我知道,爲什麼我評論你的帖子,並說我喜歡這個基地26計數。謝謝:D – 2011-05-19 16:24:50

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 
} 

注:只是一個示範,給你基本的想法

+0

你可以比較'字符'與'''象徵?是否有一個原因,您將字符串轉換爲小寫? – 2011-05-19 15:05:46

+0

@HarryPham是的,理由是忽略'A','a'之間的衝突,因爲它們有不同的ASCII碼 – 2011-05-19 15:46:53

1

你有26個字母...... 讓你有一個範圍爲26×26

它解析爲int,然後計算MOD( 26 * 26)

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

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

等...

然後你可以播放這個數字,並用這些規則解析它

+0

26β2如何等於26? – 2011-05-19 15:01:27

+0

它應該是26^1 ...修復它 – 2011-05-19 15:03:52

+0

基地26計數... – 2011-05-19 15:04:14