【发布时间】:2020-12-16 04:47:39
【问题描述】:
如何通过调用 InOrder(下面的代码)来简化/提高可读性。 代码的目的是检查一个 Rectangle 是否包含一个 Point。 下面是 Rectangle 类的代码,下面是 InOrder 类的代码。 我很难找到使代码更具可读性的方法,我想尽可能地简化它。
// Construct a rectangle from two arbitrary points
public class Rectangle {
private int x1;
private int y1;
private int x2;
private int y2;
public Rectangle(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public boolean contains(int x, int y) {
if(x1 <= x2) {
if(x1 <= x && x <= x2) {
if(y1 <= y2) {
return y1 <= y && y <= y2;
} else {
return y2 <= y && y <= y1;
}
}
} else {
if(x2 <= x && x <= x1) {
if(y1 <= y2) {
return y1 <= y && y <= y2;
} else {
return y2 <= y && y <= y1;
}
}
}
return false;
}
}
public class InOrder {
//Don't change this
public boolean OutOfOrder(int n1, int n2, int n3) {
return (n1 > n2) || (n2 > n3);
}
//The original and messy InOrder, leave this as an example of what not to do
public boolean inOrder(int n1, int n2, int n3) {
if (n2 > n1) {
if (n3 > n2) {
return true;
} else {
return false;
}
} else if (n2 == n1) {
if (n3 == n1) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}
【问题讨论】:
标签: java if-statement return boolean conditional-statements