我正在尝试打印翻译点的坐标。如果该点在x和y轴上都转换到10,-10范围之外,则应返回原始点而不是转换点。因此,对于p1(5,4),如果我要将它翻译为(7,8),它应该返回(5,4)。我无法弄清楚如何告诉Java在这种情况下打印原始点。我需要包含某种布尔值吗?这是我到目前为止所拥有的。 (代码用德语写,但“verschiebe”意思是翻译。)任何帮助将不胜感激!谢谢你们提前:))
public class Punkt2 {
private int x;
private int y;
public void setX (int i) {
x = i;
}
public void setY (int i) {
y = i;
}
public void verschiebe(int deltaX, int deltaY){
x = x + deltaX;
y = y + deltaY;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public static void main (String[] args){
Punkt p1 = new Punkt();
p1.setX(5); p1.setY(4);
Punkt p2 = new Punkt();
p2.setX(2);p2.setY(1);
p1.verschiebe(7,8);
if (p1.getX() > 10 || p1.getY() > 10 || p1.getX() < -10 || p1.getY() < -10){
System.out.println(new Punkt());
}
else {
System.out.println(p1.getX() + "," + p1.getY());
}
p2.verschiebe(3, 2);
if (p2.getX() > 10 || p2.getY() > 10 || p2.getX() < -10 || p2.getY() < -10){
System.out.println(new Punkt());
}
else {
System.out.println(p2.getX() + "," + p2.getY());
}
}
}
答案 0 :(得分:0)
执行此操作的常用方法是检查translate()方法内的边界。
例如:
private boolean outOfBounds(point, bounds) {
return (abs(point) > bounds);
}
public void translate(int deltaX, int deltaY) {
int newX = x + deltaX;
int newY = y + deltaY;
if(outOfBounds(newX, 10) || outOfBounds(newY, 10)) {
return;
}
x = newX;
y = newY;
}
答案 1 :(得分:0)
如果您的意思是您不希望点的x或y值超过10或低于-10,那么您只需更改verschiebe方法中的值即可。
像这样:
public void verschiebe(int deltaX, int deltaY){
if(x + deltaX <= 10 && x + deltaX >= -10){
x = x + deltaX;
}
if(y + deltaY <= 10 && y + deltaY >= -10){
y = y + deltaY;
}
}
如果点的大小超过10或小于-10,则点的x和y值将保持不变。所以现在在主类中你可以打印你想要的点,你的verschiebe方法会注意你的x和y总是在-10到10之间。
答案 2 :(得分:0)
让Punkt对象负责通过返回&#34;翻译&#34;来翻译点数。点。当翻译结果超出界限时,它可以返回自我。
class Punkt {
private int x;
private int y;
public Punkt(int x, int y) {
this.x = x;
this.y = y;
}
public Punkt verschiebe(int dX, int dY) {
int newX = x+dX;
int newY = y+dY;
if (abs(newX) > 10 || abs(newY) > 10) {
return this;
}
return new Punkt(newX, newY);
}
public void print() {
System.out.println(x + "," + y);
}
}
还会建议您自己进行Punk打印,这样您的客户就可以看作:
public static void main (String[] args){
Punkt p1 = new Punkt(5, 4);
Punkt p2 = new Punkt(2, 1);
p1.verschiebe(7,8).print();
p2.verschiebe(3,2).print();
}
更好的是,如果客户实际上需要打印翻译点,则上述代码可以进一步改进为:
public static void main (String[] args){
Punkt p1 = new Punkt(5, 4);
Punkt p2 = new Punkt(2, 1);
p1.printTranslated(7,8);
p2.printTranslated(3,2);
}
让Punkt满足客户的需求并不难。