2017-10-19 186 views
0

我有一個字符串改變值,例如:s2 = "SPX8X55"; 我想這個字符串的每個字母都有自己的價值:轉換INT字符轉換成int不需要在Java

(A = 1,B = 2,... Z = 26)

我已經想通了,我可以通過foreach循環分配字符爲int數。 由於我只使用大寫字母我用C - 64,因爲A是65號在ASCII,所以65 - 64 = 1 => A有數字1

for (char c : s2.toCharArray()) { 
    int charzahl = c - 64; 
    System.out.println(charzahl); 
} 

,但我想的數字留數字。如果我用這個的foreach循環,我得到-8 8和-11爲5 我曾經想過一個「if語句」,如:

if (c >= 0 || c <= 0){ ... } 

,以檢查是否有對C的任何數字。如果我將這些字符轉換爲int,我會再次得到-8和-11。 我該如何將它們投入int以保持原樣?我的目的是在一個for循環結尾添加所有數字。

+0

「但我希望數字保持數字」 - 你究竟是什麼意思?你的意思是「我希望數字'0'到'9'保持值48-57包括在內?」 –

+2

'if(c> = 0 || c <= 0)'哪個數字不會大於或等於零或小於或等於零?似乎如果沒有意義。 –

+0

我希望5保持5但是作爲int而不是-11。 – Jamie

回答

1

您對不同的範圍有不同的計算。由於這只是少數,所以這個語法很清楚。

int charzahl = 
    (c >= 'A' && c <= 'Z') ? c - 'A' + 1 : 
    (c >= '0' && c <= '9') ? c - '0' : 
    0; 
+0

這就是我一直在尋找的!非常感謝。 – Jamie

+0

BTW-Java使用[Unicode](http://www.unicode.org/charts/nameslist/index.html)的UTF-16編碼,而不是ASCII的ASCII編碼。 –