gpt4 book ai didi

java - 比较 double 的问题

转载 作者:行者123 更新时间:2023-11-30 04:07:17 25 4
gpt4 key购买 nike

这个简单的 if 比较不起作用,我不知道为什么。

代码:

public abstract class Button extends Drawable_object {
...

@Override
public void update()
{
super.update();
mouseOver_last = mouseOver;

double mx = Game_logic.get_mouse_x();
double my = Game_logic.get_mouse_y();

//the not working statement check:
if ((mx <= x + ((double)width / 2))&&
(mx >= x - ((double)width / 2))&&
(my >= y - ((double)height / 2))&&
(my <= y + ((double)height / 2)))
{ mouseOver = true;}
else mouseOver = false;
....
}

虽然 Game_logic.get_mouse_x() 和 y 是静态方法:

public class Game_logic {
...

public static double get_mouse_x() { return mouse_x; }
public static double get_mouse_y() { return mouse_y; }
}

这些是由 Mouse adapaer 在我的主运行类中设置的:

 public Board() throws IOException, URISyntaxException {
...

private class MAdapter2 extends MouseAdapter {
@Override
public void mouseMoved(MouseEvent e) {
Game_logic.set_mouse_x(e.getX());
Game_logic.set_mouse_y(e.getY());
}

}

问题是,当我在屏幕上绘制 x - width/2、mx 和 x + width/2 (与 y 相同)时,将鼠标放在我想要的位置看起来语句必须是正确的,但是 mouseOver 仍然是错误的。我该如何解决这个问题?

最佳答案

这并不能直接回答您的问题,我只是表明您的 if 语句有可能成立。我相信您应该打印出 mx,my 并将它们与您期望的值进行比较。这可能就是你的问题所在。显然,您还应该检查您对 x,y,width,height 的选择。

public static void main(String[] args) {
boolean mouseOver;
int width = 50;
int height = 50;
double x = 40;
double y = 40;
double mx = 40;
double my = 40;
if ((mx <= x + ((double) width / 2)) && (mx >= x - ((double) width / 2))
&& (my >= y - ((double) height / 2))
&& (my <= y + ((double) height / 2))) {
mouseOver = true;
} else {
mouseOver = false;
}
System.out.println(mouseOver);
}

请打印出mx,my,x,y,width,heigh的所有值并将其发布并与您认为的值进行比较。

关于java - 比较 double 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435152/

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