当我试图调用我在main方法中创建的方法时,我遇到了错误

时间:2016-02-18 14:03:50

标签: java

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

为什么导致错误的代码?我在想。

在此先感谢您的帮助,我们将不胜感激。

3 个答案:

答案 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,除非:

  1. 您将其指定为long,例如128L(遗憾的是shortbyte没有说明符)
  2. 将其分配给另一个整数类型,例如short s = 1;
  3. 你明确地投了它,例如(short) 4
  4. 您有拓宽原语转换,例如将int传递给期望long
  5. 的方法

    intshortbyte的转换称为缩小基元转换,如果intshort,则可能会失败太大而不适合%APPDATA%\android-sdk

    Documentation

答案 2 :(得分:0)

在调用subtractNumbers方法之前尝试创建变量。这样,您可以设置所需的类型,并且不会抱怨类型不相同。