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

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图片说明图片说明

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

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

我觉得是这样的,这里使用了重载,那么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;
}
这两个是不是一样的?????

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(模棱两可)
修改方法名即可,亲测有效

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

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

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

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

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