我正在制作一个需要检查浮动x值的安卓游戏,如果值为320则应该重置为1,如果不是,则应该增加15。这是我的代码使用,但是,它不起作用:
if (x == 320) {
x = 1;
Parachuter p = new Parachuter(x, y);
parachuters.add(p);
Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}
else {
x = x + 15;
Parachuter p = new Parachuter(x, y);
parachuters.add(p);
Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}
答案 0 :(得分:1)
你能告诉我们什么不起作用吗?使用浮点数尝试并使用F扩展名来标识其浮点数(例如x == 320.0f)。
我有一种感觉,你想知道X位置是否大于或等于320,在这种情况下你需要使用以下内容:
if (x >= 320) {
x = 1;
Parachuter p = new Parachuter(x, y);
parachuters.add(p);
Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}
else {
x += 15;
Parachuter p = new Parachuter(x, y);
parachuters.add(p);
Toast.makeText(getContext(), "x=" + x + " y=" + y, 15).show();
}
另外,我建议您打印到日志而不是每次都创建Toasts。
答案 1 :(得分:1)
不要以这种方式比较浮点值。而不是x == 320.0
,它们应该像这样比较:
if (Math.abs(x - 320.0) < EPS) {}
其中EPS
是一个像1e-6
这样的小值或类似的小值。
答案 2 :(得分:1)
如果这是唯一改变x值的代码,那么问题是x永远不会是320.如果x从1开始并且每次增加15,那么x最终将变为316,然后331。
如果x从0开始,则它将变为315,然后变为330。
将您的if
语句更改为测试x >= 320
可能会做您想做的事。
答案 3 :(得分:0)
使用调试器并一次检查每个变量的值。找出分配给变量的值不正确地工作可能会有所帮助。