Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我试图调用在main方法中创建的方法时,我遇到了错误_Java - Fatal编程技术网

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

Java 当我试图调用在main方法中创建的方法时,我遇到了错误,java,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

当我编译并运行程序时,会出现以下错误:

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));
    }    
}
为什么代码会导致错误?我想知道


提前感谢您的帮助,我们将不胜感激。

因为错误表明您正在传递2个整数,而不是一个短整数和一个字节。尝试:

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
或将您的方法更改为:

System.out.println(subtractNumbers((short) 127, (byte) 127, 0.0f));

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

错误的原因是,在Java中,整数文本是一个
int
,除非:

  • 您将其指定为
    long
    ,例如
    128L
    (遗憾的是,
    short
    字节没有说明符)
  • 将其分配给另一个整数类型,例如
    short s=1
  • 您可以显式地强制转换它,例如
    (short)4
  • 您有一个加宽的原语转换,例如,将
    int
    传递给一个需要
    long
  • int
    short
    byte
    的转换称为缩小原语转换,如果
    int
    太大而无法装入
    short
    ,则转换通常会失败


    您正在向
    subtractNumbers
    方法传递2个完整整数,而实际上它接受一个short、一个byte和一个float。
    public static short subtractNumbers(int a, int b, float k) {
        return (short) (a + b - (int) k);
    }