繁体   English   中英

如何在Java中执行ASCII减法

[英]How to perform ASCII subtraction in java

我有一个名为tempchar[]数组,其中仅包含abc 现在,如果数组中的两个相邻字符是不同的,即temp[j]temp[j+1]分别包含ab ,则需要将c存储在temp[j+1]

为此,我定义了

private static final int CHARSUM = 294;

这是abc的ASCII值之和。 我试图从294减去temp[j]temp[j+1]和。

temp[j+1] = CHARSUM-(temp[j]+temp[j+1]);

如果其他值为ab ,则应存储值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]));

但是,这些都没有起作用,我没有找到任何其他答案可以帮助我解决问题。 因此,任何解决此问题的帮助将不胜感激。 谢谢。

您可以将减法的结果转换为char:

temp[j+1] = (char)(CHARSUM-(temp[j]+temp[j+1]));

在Java中, char是“真正的”整数,介于065535之间。 如果要将超出范围的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"是一个String ,而不是一个int
  • CHARSUM仅应用于CHARSUM整个表达式仍然是int
  • getNumericValue返回一个int而不是char ,因此您必须进行强制转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM