2011-09-28 22 views
0

我想使它能夠使單個三字符子字符串並將它們轉換爲整數,條件是字符串的長度是三倍的倍數。分區子串轉換成的整數應該作爲包含ASCII表的所有打印字符的數組中的相對位置。我希望能夠根據ASCII小數表將數字轉換成文本

String IntMessage = result.toString(); 
    if 
    { 
    (IntMessage.substring(0,1)=="1" && IntMessage.length()%3==0) 
     for(j=0;j < IntMessage.length()-2;j += 3) 
      n = Integer.parseInt(IntMessage.substring(j,j+3)); 
      mess += ASCII[n-32]; 
     return mess; 

在其他條件下,該方法應採用字符串的前兩個字符並將它們初始化爲變量i。在這種情況下,變量mess被初始化爲ASCII數組中的字符,其索引爲i-32。然後有一個for循環,它將剩下的字符分割成三位子字符串,並根據它們在ASCII數組中的相應位置將它們轉換爲字符串。該數組中的字符串變量會不斷添加到變量混亂中,以便將BigInteger轉換爲IntMessage字符串的字符串轉換。

int i = Integer.parseInt(IntMessage.substring(0,2)); 

    mess=ASCII[i-32]; 
      for(l=2; l< IntMessage.length() - 2; l+=3) 
       r = Integer.parseInt(IntMessage.substring(l,l+3)); 
       mess+=ASCII[r-32]; 
    return mess; 

由於某種原因該方法不工作,我想知道我是否做錯了什麼。我知道如何獲取輸入字符串並將其轉換爲一系列數字,但我也想做相反的處理。無論如何你可以幫忙嗎?根據您的描述,您可以使用以下方法

+3

能否請您給例如輸入,輸出和你的方法目前並錯誤的。 – Howard

+1

對不起,我很難理解你想要完成的事情,所以也許其他潛在的海報也同樣困惑。也許如果你舉了一些例子,或者可以澄清目標。 – Jay

+0

Stirng「daa」應返回100097097,結果等於100097097. IntMessage =「100097097」。我想要做的是將字符串IntMessage分區爲單個三位子字符串。 String mess是一個空字符串,它從IntMessage的三位子字符串開始,從100開始。該方法連接ASCII [[100] -32],它是ASCII [68],即「d」。然後,變量j被三個變量並轉到下一個子字符串「097」,然後子字符串被轉換爲一個整數n。所以該方法返回ASCII [65],它是「a」等等。 – user969334

回答

1

String fromIntMessage(String msg) { 
    StringBuilder result = new StringBuilder(); 
    for (int x = (msg.length() % 3 - 3) % 3; x < msg.length(); x += 3) { 
     int chr = Integer.parseInt(msg.substring(Math.max(x, 0), x + 3)); 
     result.append(Character.toString((char) (chr - 32))); 
    } 
    return result.toString(); 
} 

String toIntMessage(String string) { 
    StringBuilder result = new StringBuilder(); 
    for (char c : string.toCharArray()) { 
     result.append(String.format("%03d", c + 32)); 
    } 
    return result.charAt(0) == '0' ? result.substring(1) : result.toString(); 
} 

,這將給你

toIntMessage("DAA")    // => "100097097" 
fromIntMessage("100097097")  // => "DAA"