【问题标题】:converting a int char into int without changing the value in java将 int char 转换为 int 而不更改 java 中的值
【发布时间】:2017-10-19 15:17:25
【问题描述】:

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

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

我发现我可以通过 foreach 循环将字符分配给一个整数。 因为我只使用大写字母,所以我使用 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-statement”,比如:

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

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

【问题讨论】:

  • “但我希望这些数字保留数字”-确切地是什么意思?您的意思是“我希望数字 '0' 到 '9' 保持在 48-57 之间吗?”
  • if ( c &gt;= 0 || c &lt;= 0) 哪个数字不会大于或等于零或小于或等于零?似乎毫无意义。
  • 我希望 5 保持 5 但作为 int 而不是 -11。
  • 你想让A和1都变成1吗?

标签: java casting char int ascii


【解决方案1】:

对于不同的范围,您有不同的计算。由于只有几个,所以这个语法很清楚。

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

【讨论】:

  • 顺便说一句——Java 使用 Unicode 的 UTF-16 编码,而不是 ASCII 的 ASCII 编码。
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 2016-05-21
  • 2014-02-14
相关资源
最近更新 更多