public class MyClass
{
public static short subtractNumbers (short a, byte b, float k )
{
int x=(short)a;
int y=(short)b;
int z=(short)k;
return (short)(x+y-z);
}
public static void main (String[] args)
{
System.out.println(subtractNumbers(127,127,0.0f));
}
}
当我编译并运行程序时,我收到错误,如:
error: method subtractNumbers in class MyClass cannot be applied to given types;
System.out.println(subtractNumbers(127,127,0.0f));
required: short,byte,float
found: int,int,float
reason: actual argument int cannot be converted to short by method invocation conversion
为什么导致错误的代码?我在想。
在此先感谢您的帮助,我们将不胜感激。
答案 0 :(得分:1)
由于错误声明您传递了2个int数字而不是short和1个字节。尝试:
System.out.println(subtractNumbers((short) 127, (byte) 127, 0.0f));
或者将您的方法更改为:
public static short subtractNumbers(int a, int b, float k) {
return (short) (a + b - (int) k);
}
答案 1 :(得分:1)
错误的原因是在Java中,整数文字是int
,除非:
long
,例如128L
(遗憾的是short
或byte
没有说明符)short s = 1;
(short) 4
int
传递给期望long
从int
到short
或byte
的转换称为缩小基元转换,如果int
为short
,则可能会失败太大而不适合%APPDATA%\android-sdk
。
答案 2 :(得分:0)
在调用subtractNumbers方法之前尝试创建变量。这样,您可以设置所需的类型,并且不会抱怨类型不相同。