//利用方法重载的概念 公开课练习10 {
// Method to calculate the area of a rectangle
public static double calculateArea(double length, double width) {
return length * width;
}
// Method to calculate the area of a square
public static double calculateArea(double side) {
return side * side;
}
// Method to calculate the area of a circle
public static double calculateArea(double radius) {
return Math.PI * radius * radius;
}
public static void main(String[] args) {
// Calculate and display the area of a rectangle
System.out.println("Area of rectangle (length=5, width=4): " + calculateArea(5.0, 4.0));
// Calculate and display the area of a square
System.out.println("Area of square (side=4): " + calculateArea(4.0));
// Calculate and display the area of a circle
System.out.println("Area of circle (radius=3): " + calculateArea(3.0));
}
}
我从chatGPT获取了这段代码,它没有显示任何错误,但是当我编译这个程序时,发生了错误。
你所做的不是重载,并且不会编译。
有两种简单的方法可以纠正此问题:
// Method to calculate the area of a square
public static double calculateArea(double side) {
return side * side;
}
// Method to calculate the area of a circle
public static double calculateArea(double radius) {
return Math.PI * radius * radius;
}
选项 1:给它们起独特的名字
// Method to calculate the area of a square
public static double calculateAreaOfSquare(double side) {
return side * side;
}
// Method to calculate the area of a circle
public static double calculateAreaOfCircle(double radius) {
return Math.PI * radius * radius;
}
或添加一个参数,定义您要查找的类型:
public enum Shape {
CIRCLE,
SQUARE;
}
// Method to calculate the area of a shape
public static double calculateArea(double side, Shape shape) {
if ( shape == Shape.SQUARE )
return side * side;
else if ( shape == Shape.CIRCLE )
return Math.PI * radius * radius;
throw new RuntimeException("Shape: " + shape.name() + " not supported");
}
要解决此问题,只需重命名每个calculateArea方法以反映其计算的形状,例如calculateRectangleArea、calculateSquareArea和calculateCircleArea,因为Java对所有这些方法都采用单个双精度作为参数感到困惑。发生错误的原因是 Java 无法仅通过参数名称或返回类型来区分方法。
最好的办法是更改方法名称,如下所示:
public static double calculateRectangleArea(double length, double width) {
return length * width;
}
public static double calculateSquareArea(double side) {
return side * side;
}
public static double calculateCircleArea(double radius) {
return Math.PI * radius * radius;
}