我试图为学校编写一些东西,但我不断收到这个编译错误:
错误:不兼容的类型:从int到byte的转换可能有损失
A = (字节)C / (字节)B;
System.out.println("Aufgabe 4");
byte A=11; int B, C;
B = A + A;
C = B * (int)1.0;
A = (byte)C / (byte)B;
您的结果以整数形式出现。您应该强制转换它而不是变量:
A = (byte) (C / B);
来自JavaSpec:
5.6.2二进制数字提升
当运算符对一对操作数应用二进制数值提升时,每个操作数必须表示一个数值类型的值,以下规则适用,以便在必要时使用加宽转换(§5.1.2)转换操作数:
如果任一操作数的类型为double,则另一个操作数将转换为double。
否则,如果其中一个操作数是float类型,另一个操作数将被转换为float。
否则,如果任一操作数是long类型,则将另一个操作数转换为long。
否则,两个操作数都将转换为 int 类型。
含义如下:(字节)C / (字节)B
=
因此,像A = (字节)(C / B);
这样的东西会更好。
原因是您没有将除法运算的整数结果转换为字节:
A = (byte) C / (byte)B; // you cast C to byte, cast B to byte and then make division
相反,只转换结果
A = (byte) (C / B); // this is casting result to byte
我对这里的代码有疑问: 我不确定究竟是哪个部分导致了以下错误: 不兼容的类型:从整数到字节的可能有损转换 这是程序输出的错误消息:
internal.java:21:错误:不兼容类型:从int到byte a=(byte)c+b的转换可能有损;^1错误
我试图用java将十六进制数据写入我的串口,但是现在我不能将十六进制数据转换成字节数组。 以下是显示错误消息的代码: 这是写入串行端口的代码: 我能知道如何解决这个问题吗?目前我正在使用javax.comm插件。谢谢。
这是我的代码。我想显示月份的名称而不是数字。但是我的代码中有一个错误。 它说“不兼容的类型:可能的有损转换从长到整数”。我的代码中的错误是:-
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!