将int char转换为int而不更改java中的值

时间:2017-10-19 15:17:25

标签: java casting char int ascii

我有一个字符串,例如:s2 = "SPX8X55"; 我希望这个String的字母表中的每个字母都有自己的值:

  

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

我已经发现我可以通过foreach循环将字符分配给一个int号。 因为我只使用大写字母,所以我使用c - 64,因为A是ASCII中的数字65,所以65 - 64 = 1 => A的编号为1。

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

但是我希望数字能够保持数字。如果我使用这个foreach循环,我得到-8为8和-11为5。 我曾想过像“if-statement”这样的话:

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

检查c是否有任何数字。如果我将这些字符转换为int,我会再次返回-8和-11。 如何将它们转换为int以保持原样?我的目的是在最后用for循环将所有数字加在一起。

1 个答案:

答案 0 :(得分:1)

您对不同的范围有不同的计算方法。由于它只是少数,因此这种语法很清楚。

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