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


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


我发现可以通过foreach循环将char分配给一个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,5表示-11。
我曾考虑过类似“ if语句”的问题:

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


检查c是否有任何数字。如果我将这些字符转换为一个整数,我会再次得到-8和-11。
我如何将它们转换为整数以保持原样?我的目的是通过循环将所有数字加在一起。

最佳答案

您对不同的范围有不同的计算。由于只有少数几种,因此此语法很明确。

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

09-11 11:09