2017-10-19 154 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编码。 –