gpt4 book ai didi

java - 在构造函数中初始化值之前检查条件

转载 作者:行者123 更新时间:2023-12-01 19:33:56 24 4
gpt4 key购买 nike

我有一个练习,其中我必须根据相对的顶点(点)创建一个矩形。我有一个类 Point 来初始化点,然后使用它们创建一个矩形(计算宽度、高度、面积......)。我想在矩形构造函数中初始化值之前检查点的 x 或 y 值是否不相等。我尝试通过 setter 来完成此操作,但不确定如何将其传递给构造函数。如何正确执行 - 检查条件后传递值?

public class Point {

private double x;
private double y;

public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
}


public class Rectangle {

Point p1;
Point p2;


public Rectangle(Point p1, Point p2) {
this.p1 = p1;
this.p2 = p2;
}
public void setPoints() {
boolean rectangleCondition = (p1.getX() != p2.getX()) && (p1.getY() != p2.getY());
if(rectangleCondition) {
Rectangle.p1 = p1;
Rectangle.p2 = p2;
}

}

最佳答案

您只需在构造函数中执行此操作并让 p1p2因为 null 对象是条件无效

public Rectangle(Point p1, Point p2) {
if(p1.getX() != p2.getX() && p1.getY() != p2.getY()){
this.p1 = p1;
this.p2 = p2;
}
}

或者创建默认点:

public Rectangle(Point p1, Point p2) {
if(p1.getX() != p2.getX() && p1.getY() != p2.getY()){
this.p1 = p1;
this.p2 = p2;
}else{
this.p1 = new Point(0,0);
this.p2 = new Point(1,1);
}
}

或者抛出异常

public Rectangle(Point p1, Point p2) {
if(p1.getX() != p2.getX() && p1.getY() != p2.getY()){
this.p1 = p1;
this.p2 = p2;
}else{
throw new IllegalArgumentException();
}
}
<小时/>

还请记住Rectangle.p1无法工作,因为属性是针对每个实例的,调用类似的属性意味着它对于类是全局的,并且它是用 static 定义的关键字

static Point globalPointForClass;

关于java - 在构造函数中初始化值之前检查条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com