英文:
How should I pass the "type" parameter of in a single constructor in an if/else statement?
问题
以下是翻译好的部分:
如何在 if/else 语句中传递构造函数的 "type" 参数?例如 - cal(2,2,0,rectangle)。所以,如果 type=rectangle,则计算矩形的面积。如果 type=circle,则计算圆的面积。
我正在使用单个构造函数。我的问题是,我知道逻辑,但无法以语法形式编写它。我正在使用 Java 或 Apex。
我想使用 if-else 语句。在代码中,如何传递 type 参数?
我的程序如下 -
1. 如果 "type"=square,则编译器将调用计算正方形的面积。
2. 如果 "type"=circle,则编译器将调用计算圆的面积。
public class Area {
    private String type;
    private Integer length;
    private Integer breadth;
    private Integer height;
    private Integer area;
    public void setType(String t){
        type=t;    
    }
    public void setLength(Integer l){
        length=l;    
    }
    public void setbreadth(Integer b){
        breadth=b;    
    }
    public void setheight(Integer h){
        height=h;    
    }
    /* public void setArea(Integer a){
        area=a;    
    } */
    public Integer getLength(){
        return length;  
    }
    public Integer getbreadth(){
        return breadth;  
    }
    public Integer getheight(){
        return height;  
    }
    public string gettype(){
        return type;  
    }
    public Integer AreaRectangle(){
        return area=length*breadth;
    }
    public Integer AreaSquare(){
        return area=length*length;
    }
    public integer AreaTriangle(){
        return area=1/2 *(breadth*height);
    }
    public Area(){ // 默认构造函数
        length=9;
        breadth=2;
        height=7;       
    }
    public Area(String t,Integer l ,Integer b,Integer h ){         // 带参数的构造函数
        type=t;
        length=l;
        breadth=b;
        height=h;          
    }  
}
英文:
How should I pass the "type" parameter of a constructor in an if/else statement? For eg - cal(2,2,0,rectangle). So if the type=rectangle then calculate area of a rectangle. If type=circle, calculate the area of a circle.
I am using a single constructor. My issue is that I know the logic but I can't write it in syntax. I am using Java or Apex.
I want to use if-else statement. How should I pass the type parameter in the code?
My program is like this -
- 
if "type"=square, the compiler will call calculate area of the square.
 - 
if "type"=circle, the compiler will call calculate area of the circle.
 
public class Area {
private String type;
private Integer length;
private Integer breadth;
private Integer height;
private Integer area;
public void setType(String t){
type=t;    
}
public void setLength(Integer l){
length=l;    
}
public void setbreadth(Integer b){
breadth=b;    
}
public void setheight(Integer h){
height=h;    
}
/* public void setArea(Integer a){
area=a;    
} */
public Integer getLength(){
return length;  
}
public Integer getbreadth(){
return breadth;  
}
public Integer getheight(){
return height;  
}
public string gettype(){
return type;  
}
public Integer AreaRectangle(){
return area=length*breadth;
}
public Integer AreaSquare(){
return area=length*length;
}
public integer AreaTriangle(){
return area=1/2 *(breadth*height);
}
public Area(){ // default constructor
length=9;
breadth=2;
height=7;       
}
public Area(String t,Integer l ,Integer b,Integer h ){         // parameterised constructor
type=t;
length=l;
breadth=b;
height=h;
}  
}
答案1
得分: 4
你不需要。你创建一个名为"Shape"的抽象类。
public abstract class Shape {
    abstract double area();  
}
然后创建另外两个类,它们分别扩展了Shape,并提供了适当的实现。
public class Square extends Shape {
    private int side;
    public Square(int side) {
        this.side = side;
    }
    public double area() {
        return (double) side * side;
    }
}
现在,在你想调用它的地方:
Shape shape = new Square(5);
double area = shape.area();
int radius = 4;
shape = new Circle(radius);
double circleArea = shape.area();
英文:
You don't. You create an abstract class called shape.
public abstract class Shape {
abstract double area();  
}
And then two other classes that extend Shape and each provides the proper implementation
public class Square extends Shape {
private int side;
public Square(int side) {
this.side = side;
}
public double area() {
return (double) side * side;
}
}
Now at the place you want to call it:
Shape shape = new Square(5);
double area = shape.area();
Int radius = 4;
shape = new Circle(radius);
double circle area = shape.area();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论