public double subtractNumbers(字节a1,int a2,int a3)
我的问题是为什么编译器在第一种情况下不显示错误,而在第二种情况下显示错误?以下是完整的代码:
public class MyClass {
public static void main(String args[]) {
MyClass myClass = new MyClass();
byte test = 1; // this line does not show any errors
double result = myClass.subtractNumbers(1,2,3); // But this call shows error
System.out.println("function result : " + result);
}
public double subtractNumbers(byte a1, int a2, int a3){
double sum = a1 + a2 + a3;
return sum;
}
}
当您赋值一个数值文字时,该文字的值在编译时是已知的。如果该值在字节范围内,编译器允许该赋值。同样,这个语句也会给出编译错误。
byte test = 1000;
不兼容类型:从int到byte的转换可能有损
对于第二种情况,根据方法签名,方法采用类型的参数。Now方法不知道将用什么值调用它。因此,当您调用传递整数值的方法时,它不能保证值将位于字节范围内。所以编译器会直接抛出一个错误。
int a1 = 5; int a2 = 8; int a3 = 10;
subtractNumbers(a1, a2, a3); // this would have been OK
a1 = 1000;
subtractNumbers(a1, a2, a3); // this would not have been OK
我试图为学校编写一些东西,但我不断收到这个编译错误: 错误:不兼容的类型:从int到byte的转换可能有损失 A = (字节)C / (字节)B;
我对这里的代码有疑问: 我不确定究竟是哪个部分导致了以下错误: 不兼容的类型:从整数到字节的可能有损转换 这是程序输出的错误消息:
internal.java:21:错误:不兼容类型:从int到byte a=(byte)c+b的转换可能有损;^1错误
int是byte、short、int、long的默认文字,然后是为什么byte c=15被接受而不进行强制转换,但不接受方法参数。 提前谢谢你。
我试图用java将十六进制数据写入我的串口,但是现在我不能将十六进制数据转换成字节数组。 以下是显示错误消息的代码: 这是写入串行端口的代码: 我能知道如何解决这个问题吗?目前我正在使用javax.comm插件。谢谢。
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!