有条件的&&当只满足一个条件时运行语句

时间:2016-12-30 02:58:34

标签: java

抱歉,我找不到足够具体的东西来回答我的问题,为什么第一个条件为真的陈述被忽略而第二个条件没有被运行?

       [Code in debugger][1]

enter image description here

 } else if (batAOnStrike && batThreeOnStrike ) {
        batThreeScore += 1;
        batThreeBallsFaced += 1;
        batThreeStrikeRate = batThreeScore * 100 / batThreeBallsFaced;
        displayBatAScore(batThreeScore);
        displayBatABalls(batThreeBallsFaced);
        displayStrikeBatA(batThreeStrikeRate);
        teamScore += 1;
        scoreCalc();
        ranRuns += 1;
        batDecider();
    }  if (batBOnStrike && batThreeOnStrike ) {
        batThreeScore += 1;
        batThreeBallsFaced += 1;
        batThreeStrikeRate = batThreeScore * 100 / batThreeBallsFaced;
        displayBatBScore(batThreeScore);
        displayBatBBalls(batThreeBallsFaced);
        displayStrikeBatB(batThreeStrikeRate);
        teamScore += 1;
        scoreCalc();
        ranRuns += 1;
        batDecider();

1 个答案:

答案 0 :(得分:-2)

当逻辑表达式从左到右进行评估时,它们会被测试可能的短路"评估使用以下规则:

  • false && (anything)短路评估为假。
  • true || (anything)短路评估为真。

逻辑规则保证这些评估始终是正确的。请注意,上述表达式的任何部分都不会被评估,因此这样做的任何副作用都不会生效。另请注意,上述表达式的任何部分都是任何单个逻辑表达式(如括号所示)。

因此,如果 batAOnStrike batBOnStrike euqals为false,则无需评估 batThreeOnStrike