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

标签 java casting char int ascii

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

(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,5 时得到 -11。 我考虑过像这样的“if 语句”:

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

检查 c 是否有数字。如果我将这些字符转换为 int,我会再次得到 -8 和 -11。 我怎样才能将它们转换为 int 以保持原样?我的目的是用 for 循环将所有数字加到一起。

最佳答案

对于不同的范围,您有不同的计算。由于只有几个,因此语法很清晰。

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

关于java - 将 int char 转换为 int 而不改变 java 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833314/

相关文章:

c++ - 将 c char 指针复制到非指针 char

java - 如何在 JasperReports 的表页脚中通过文本字段显示数据

Golang 类型在指向一种类型 slice 的指针 slice 与另一种类型 slice 之间的类型转换

c - 取消引用 void 指针

mysql - 将日期转换为 int

Java 调用者可以在从类返回的字节缓冲区中找到空字符,但在迭代类中的字节缓冲区时却找不到空字符

c++ - char 双指针程序中的访问冲突

java - 自定义 Exoplayer 播放和暂停按钮

java - 在 json 输出中获取对象时遇到问题

java - 当图像路径更改时,JPanel 中的图像未更新