我试图构建一个不依赖于嵌套if语句的float
变量的代码,这与您在下面的代码示例中看到的不同。
正如你所看到的那样,球的速度越高,代码就越长。
是否有更短的编写代码的方法,或者我必须使用嵌套的if-else语句作为ball_vector_x的变量,当达到无穷大或仅作为示例达到100?
计数器是从零开始的int
变量
if(ball_vector_x == 4 || ball_vector_x == -4) {
counter = 1;
} else if(ball_vector_x == 5 || ball_vector_x == -5) {
counter = 2;
} else if(ball_vector_x == 6 || ball_vector_x == -6) {
counter = 3;
} else if(ball_vector_x == 7 || ball_vector_x == -7) {
counter = 4;
} else if(ball_vector_x == 8 || ball_vector_x == -8) {
counter = 5;
} else if(ball_vector_x == 9 || ball_vector_x == -9) {
counter = 6;
} else if(ball_vector_x == 10 || ball_vector_x == -10) {
counter = 7;
} else if(ball_vector_x == 11 || ball_vector_x == -11) {
counter = 8;
} else if(ball_vector_x == 12 || ball_vector_x == -12) {
counter = 9;
} else if(ball_vector_x == 13 || ball_vector_x == -13) {
counter = 10;
答案 0 :(得分:7)
看来你的计数器总是向量 - 3.你不能这样做
counter = Math.abs(ball_vector_x)-3;
答案 1 :(得分:1)
首先:您可以使用Math.abs()将比较次数减半。
然后你可以使用地图来存储所有这些对。
但是,当然,真正的答案是:您可以使用简单的公式表达这些值之间的关系。这是总是要注意的解决方案。
最后:缺少其他答案来解释 - 避免使用==比较浮点数。改为使用基于epsilon的比较。
答案 2 :(得分:-1)
这将检查ball_vector_x是负数还是正数,然后将计数器设置为等于i的值。
if (ball_vector_x >= 0) {
for (int i = 0; i < ball_vector_x; i++) {
if(i == ball_vector_x) {
counter = i - 3;
}
}
else {
for(int i = 0; i > ball_vector_x; i--) {
if (i == ball_vector_x) {
counter = (-1)*(i + 3); // I might've done the calculation wrong here
}
}
}