从char减去int:可能将有损int转换为char

Inf*_*del 1 java types

我试图在典型的密码学密钥问题中从char中减去int,但在以下语句中遇到上述错误:

char ch = (int)encrypted_message.charAt(i) + key[index];
if (ch > 122)
    ch = (int)ch - 26;
Run Code Online (Sandbox Code Playgroud)

key[]数组保存键的数字,类型为int

如何成功旋转字符?

请帮忙!

T.J*_*der 5

int大于char,但是输入了操作的结果int(然后将其存储在中char)。因此,编译器警告您可能会丢失将int值存储到char变量中的信息。

取而代之的是,确保其结果是char,这是一个有点痛,因为+-char在一个值的结果int,所以我们要投:

char ch = (char)(encrypted_message.charAt(i) + key[index]);
if (ch > 122)
    ch = (char)(ch - 26);
Run Code Online (Sandbox Code Playgroud)