首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我试图调用在main方法中创建的方法时,我得到了错误

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

Stack Overflow用户
提问于 2016-02-18 22:03:50
回答 3查看 51关注 0票数 1
代码语言:javascript
运行
复制
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));
    }    
}

当我编译和运行程序时,我得到了错误,如下所示:

代码语言:javascript
运行
复制
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

为什么代码会导致错误?我想知道。

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

EN

回答 3

Stack Overflow用户

发布于 2016-02-18 22:07:49

正如错误所述,您传递的是两个整型数字,而不是一个短整型数字和一个字节。尝试:

代码语言:javascript
运行
复制
System.out.println(subtractNumbers((short) 127, (byte) 127, 0.0f));

或者将您的方法更改为:

代码语言:javascript
运行
复制
public static short subtractNumbers(int a, int b, float k) {
    return (short) (a + b - (int) k);
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-18 22:16:41

错误的原因是,在Java语言中,整型文字是一个int,除非:

将其指定为long,例如128L (没有将其转换为另一个整数类型的shortbyte说明符,例如short s = 1;

  • you显式强制转换它,例如(short) 4

  • you具有扩大的原语转换,例如将int传递给需要long

的方法

intshortbyte的转换称为缩小原语转换,如果int太大而无法放入short,则通常可能会失败。

Documentation

票数 1
EN

Stack Overflow用户

发布于 2016-02-18 22:08:47

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35483589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档