我正在编写一个简单的射击 - 炮弹游戏'对于我的班级,我必须打印程序" HIT"当它击中目标时。我使用的代码是(h
是y轴,d
是x轴):
if (h > 100 && 680<d<780)
{
write_string("HIT");
}
然而它会打印&#34; HIT&#34;即使只满足其中一个条件。我如何做到这一点在这些条件执行操作之前必须满足这些条件?
如果我需要为上下文发布更多代码,我可以。
答案 0 :(得分:8)
@Configuration
@EnableWebMvc
public class DispatcherContext extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE", "HEAD");
}
}
一次只能做一个比对比少的比赛。单独进行检查并使用'&amp;&amp;'检查它们是否都是真的操作
答案 1 :(得分:8)
表达式680<d<780
不符合您的想法。
首先检查是否680<d
,然后评估为true
或false
。
然后比较这个结果表达式,看它是否小于780
,这意味着你可以得到条件true < 780
或 false < 780
(两者都是这是真的,因为true == 1
和false == 0
)。
你可能意味着680<d && d<780
,它通过布尔AND条件检查d
是否在680到780的范围内。
答案 2 :(得分:1)
这是因为<
是一个二元运算符,因此,您的表达式会以您不想要的方式进行评估。
检查运算符优先级表,您的表达式似乎被评估为(h > 100 && (680 < d) < 780)
,在这种情况下它是真的,与d
的值无关(因为(680 < d)
= true将导致在1 < 780
和(680 < d)
= false将导致0 < 780
)。但h
的价值仍应影响。
无论如何,您必须将if条件重写为(h > 100 && 680 < d && d < 780)
。