如何在java中执行ASCII减法
我有一个名为如何在java中执行ASCII减法,java,arrays,Java,Arrays,我有一个名为temp的char[]数组,它只包含a、b或c。现在,如果数组中的两个相邻字符是不同的,即temp[j]和temp[j+1]分别包含a和b,我需要将c存储在temp[j+1]中 为此,我定义 private static final int CHARSUM = 294; 它是a、b和c的ASCII值之和。我试着从294中减去temp[j]和temp[j+1] temp[j+1] = CHARSUM-(temp[j]+temp[j+1]); 如果其他值是a和b,则应存储值c。 但这
temp
的char[]
数组,它只包含a
、b
或c
。现在,如果数组中的两个相邻字符是不同的,即temp[j]
和temp[j+1]
分别包含a
和b
,我需要将c
存储在temp[j+1]
中
为此,我定义
private static final int CHARSUM = 294;
它是a
、b
和c
的ASCII值之和。我试着从294
中减去temp[j]
和temp[j+1]
temp[j+1] = CHARSUM-(temp[j]+temp[j+1]);
如果其他值是a
和b
,则应存储值c
。
但这里的问题是:
不兼容类型:从int到char的可能有损转换
我试着换成:
private static final char CHARSUM=“294”代码>
temp[j+1]=(char)CHARSUM-(temp[j]+temp[j+1])代码>
temp[j+1]=Character.getNumericValue(CHARSUM-(temp[j]+temp[j+1])代码>
然而,这些都不起作用,我也没有找到任何其他的答案来帮助我解决这个问题。因此,我们将非常感谢您为解决此问题提供的任何帮助。谢谢。您可以将减法结果转换为字符:
temp[j+1] = (char)(CHARSUM-(temp[j]+temp[j+1]));
您可以将减法结果强制转换为字符:
temp[j+1] = (char)(CHARSUM-(temp[j]+temp[j+1]));
在Java中,
char
实际上是一个介于0
和65535
之间的整数。如果要将该范围之外的int
赋值给char
变量,则需要显式强制转换
比如说
char c = 65535; // ok
char c = 65536; // doesn't compile
char c = (char) 65536; // compiles, but it's a lossy conversion
即使对于您的值,CHARSUM-(temp[j]+temp[j+1])
始终在该范围内,编译器也无法判断,因为它不是编译时常量。因此,需要对整个表达式应用强制转换:
temp[j+1] = (char) (CHARSUM-(temp[j]+temp[j+1]));
您的方法不起作用,原因我将解释:
是一个“294”
字符串,而不是
李>int
- 强制转换仅应用于
-整个表达式仍然是CHARSUM
int
返回的是getNumericValue
而不是int
,因此必须强制转换char
- 强制转换仅应用于
char
实际上是一个介于0
和65535
之间的整数。如果要将该范围之外的int
赋值给char
变量,则需要显式强制转换
比如说
char c = 65535; // ok
char c = 65536; // doesn't compile
char c = (char) 65536; // compiles, but it's a lossy conversion
即使对于您的值,CHARSUM-(temp[j]+temp[j+1])
始终在该范围内,编译器也无法判断,因为它不是编译时常量。因此,需要对整个表达式应用强制转换:
temp[j+1] = (char) (CHARSUM-(temp[j]+temp[j+1]));
您的方法不起作用,原因我将解释:
是一个“294”
字符串,而不是
李>int
- 强制转换仅应用于
-整个表达式仍然是CHARSUM
int
返回的是getNumericValue
而不是int
,因此必须强制转换char
- 强制转换仅应用于