[英]While I am trying to call my method, which is created in the main method, I am getting errors
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
为什么代码会导致错误? 我想知道。
在此先感谢您的帮助,将不胜感激。
由于错误状态,您传递的是2个int数,而不是一个short和一个字节。 尝试:
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);
}
错误的原因是,在Java中,整数文字是int
除非:
long
128L
例如128L
(不幸的是,没有short
128L
或byte
说明符) short s = 1;
(short) 4
int
传递给一个期望long
int
的方法 从int
到short
或byte
转换称为Narrowing基本转换 ,如果int
太大而不能放入short
,则通常可能会失败。
在调用subtractNumbers方法之前,尝试创建变量。 这样,您可以设置所需的类型,而不会抱怨类型不相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.