weixin_38125681
weixin_38125681
采纳率40%
2017-04-18 10:34

求助大神,这个参数重复定义错误是怎么回事…

public static void main(String[] args){
system.out.println(add(3,5))
}
static double add(int i,double j){
return i+j;
}

static double add(double i,int j){
return i+j;
}

static double add(double i,double j){
return i+j;
}

static double add(float i,int j){
return i+j;
}

提示报错the mathod add(int i,double j)is ambiguous for the type super图片说明图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • qq_30718113 元_帅 4年前

    楼主你好,我觉着是这样的,默认int型数据可以往float和double型转换,这样就造成了add(3,5)调用不明,只有函数名、参数列表均完全一致才可以,准确调用,所以加上方法

    static double add(int i,int j){
            return i+j;
        } 
    

    这样就可以保证准确调用了,你试试

    点赞 评论 复制链接分享
  • qq_30718113 元_帅 4年前

    我是改了方法名,可以的。刚才被你一说我也发现只要注释掉第一个方法就OK

    点赞 评论 复制链接分享
  • joy460154849 joy460154849 4年前

    被你说的,我就亲自试了一下代码,为什么我注释掉就可以呢???图片说明

    点赞 评论 复制链接分享
  • qq_30718113 元_帅 4年前

    add(3,5)在调用add方法时,不知道去调用哪一个。

     static double add(int i,double j){
            return i+j;
            }
    
            static double add(double i,int j){
            return i+j;
            }
    
            static double add(double i,double j){
            return i+j;
            }
    
            static double add(float i,int j){
            return i+j;
            }
    

    这四个方法,在本程序里是一样的,当你add(3,5)时,给add方法传进去的实参是默认的,也就是说传递的实参是int型的3和5;
    然而int型数据是可以被隐式转换为float或double型的,
    所以在此处传递默认数据时,这四个方法实质上是重复的,区分不开,所以报错ambiguous(模棱两可)
    修改方法名即可,亲测有效

    点赞 评论 复制链接分享
  • joy460154849 joy460154849 4年前

    我觉得是这样的,这里使用了重载,那么system.out.println(add(3,5)),这里add(3,5),执行该条语句时,
    static double add(int i,double j){
    return i+j;
    }
    static double add(double i,int j){
    return i+j;
    }
    这两个是不是一样的?????

    点赞 评论 复制链接分享
  • weixin_38125681 weixin_38125681 4年前

    有没有大神教教我为啥会报错…

    点赞 评论 复制链接分享
  • pku_zqh Thu_zqh 4年前

    java应该已经有叫add的函数,和你定义的重名了,你需要修改你的函数名就可以了

    点赞 评论 复制链接分享

相关推荐