if (condition1){//checks intersect
if(condition2){//checks A
if(condition3){
System.out.println("Collision A");
}
}else if(condition4){
if(condition5){
System.out.println("Collision B");
}
}else if(condition6){
System.out.println("Collision C");
}else{
System.out.println("Collision D");
}
System.out.println("Collision done");
}
当我在一个方法中运行此代码时,碰撞D永远不会工作/打印。但是,碰撞总是打印出来。所以通常cmd打印出“Collision A Collision done”,但是当碰撞d发生时它只会打印出“碰撞完成”。
编辑:大大简化了代码,条件本身不是问题。
答案 0 :(得分:2)
基本上,忽略变量的混乱,你就有了这个设置:
if (condition1){//checks intersect
if(condition2){//checks A
if(condition3){
System.out.println("Collision A");
}
}else if(condition4){
if(condition5){
System.out.println("Collision B");
}
}else if(condition6){
System.out.println("Collision C");
}else{
System.out.println("Collision D");
}
System.out.println("Collision done");
}
仅方式仅打印"碰撞完成"消息,而没有其他"碰撞A-D"消息,如果您触发条件1,2,不 3,或者您触发条件1,4和不 5.您没有触发&#34 ;碰撞D"用例;你的"碰撞A"和"碰撞B"用例不完整。
如果你想触发"碰撞D"在这种情况下,您需要将if(condition 2)
更改为if(condition2 && !condition3 && !condition4 && !condition6)
;或者你是否正在经历条件4'例如,您需要将if(condition4)
更改为if(condition4 && !condition5 && !condition6)
。
或者,或者,将您的结构更改为:
if (condition1){//checks intersect
if(condition2 && condition3){
System.out.println("Collision A");
}else if(condition4 && condition5){
System.out.println("Collision B");
}else if(condition6){
System.out.println("Collision C");
}else{
System.out.println("Collision D");
}
System.out.println("Collision done");
}
鉴于原始代码的复杂性以及更新代码的模糊性,很难确定哪种更适合您的特定情况。