繁体   English   中英

当我尝试调用在主方法中创建的方法时,出现错误

[英]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除非:

  1. 您将其指定为long 128L例如128L (不幸的是,没有short 128Lbyte说明符)
  2. 将其分配给另一个整数类型,例如short s = 1;
  3. 您明确地将其投射,例如(short) 4
  4. 你有一个扩展原语转换,例如将一个int传递给一个期望long int的方法

intshortbyte 转换称为Narrowing基本转换 ,如果int太大而不能放入short ,则通常可能会失败。

文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM