Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.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 构造函数重载错误_Java_Constructor_Overloading - Fatal编程技术网

Java 构造函数重载错误

Java 构造函数重载错误,java,constructor,overloading,Java,Constructor,Overloading,我想不出这些错误!但在编译时,它显示了错误。请帮帮我 // This program is used to find the area of a circle and a rectangle // through constructor overloading concept. class area { float radius; int l , b; public area(float r) { radius=r; } publ

我想不出这些错误!但在编译时,它显示了错误。请帮帮我

// This program is used to find the area of a circle and a rectangle    
// through constructor overloading concept.

class area {
    float radius;
    int l , b;
    public area(float r) {
        radius=r;
    }
    public area(int a , int d) {
        l=a;
        b=d;
    }
    public void display() {
        System.out.println("Area of Circle is = "+(3.14*radius*radius));
        System.out.println("Area of Rectangle is = "+(l*b));
    }
}

class constadd {
    public static void main(String arr[]) {
        area c = new area(4.5);
        c.display();
        area e=new area(4,5);
        e.display();
    }
}`

使用double代替float

import java.util.*;
import java.lang.*;
import java.io.*;


class area {
double radius;
int l , b;
public area(double r) {
    radius=r;
}
public area(int a , int d) {
    l=a;
    b=d;
}
public void display() {
    System.out.println("Area of Circle is = "+(3.14*radius*radius));
    System.out.println("Area of Rectangle is = "+(l*b));
}
}

class  Ideone {
    public static void main(String arr[]) {
    area c = new area(4.5);

    c.display();
     area e=new area(4,5);
    e.display();
}
}

正如Anik提到的,要么将构造函数更改为将double作为参数而不是float,要么在调用此构造函数时使用后缀4.5和“f”来指定要传递float,即new area(4.5f)

只有在初始化了所有3个实例变量之后,才能调用display()。或者,为每个区域编写2个不同的display()方法,或者使用默认值初始化3个变量。如果在display中您正在处理所有字段,那么我建议使用两个不同的类来扩展
区域
。或者为它实现一个接口。根据调用的构造函数,类的行为将有所不同。这表明你们班实际上是几个班。问题是什么?如果程序没有达到您期望的效果,请更改它。似乎您没有设置稍后使用的变量。因此,设置它们。请看这里: