если оператор не работает, чтобы добавить 1 на основе условия

#java

Вопрос:

Этот код определяет выигрыши и проигрыши каждого квартала, но у меня возникли проблемы с идеальным кварталом. Идеальный квартал описывается как когда у одной команды 0 очков в четверти, но другая команда набирает очки.
Все работает нормально, но когда я ввожу баллы за каждый квартал и ставлю 00-01 за первый квартал, в конце моей программы печатается инструкция по печати

Идеальные четверти: 0

для обеих команд, хотя у команды 2 должна быть идеальная четверть 1, так как в четвертьфинале они забили один раз, а команда 1 набрала 0 очков.

          if (teamOneQuarterOne > teamTwoQuarterOne) {
         teamOneStats  = "W-";
         teamTwoStats  = "L-";

         if (teamOneQuarterOne == 0 amp;amp; teamTwoQuarterOne > 0) {
             teamTwoPerfectQuarter  ;        }
     } else if (teamTwoQuarterOne < teamOneQuarterOne) {
         teamOneStats  = "L-";
         teamTwoStats  = "W-";

         if (teamTwoQuarterOne == 0 amp;amp; teamOneQuarterOne > 0) {
             teamOnePerfectQuarter  ;   }
     } else if (teamOneQuarterOne < teamTwoQuarterOne) {
         teamOneStats  = "L-";
         teamTwoStats  = "W-";

     } else {
         teamOneStats  = "T-";
         teamTwoStats  = "T-";        }

System.out.println(teamOne   " Perfect Quarters: "   teamOnePerfectQuarter);
     System.out.println(teamTwo    " Perfect Quarters: "    teamTwoPerfectQuarter);

 

Комментарии:

1. Пожалуйста, правильно отформатируйте свой код и сделайте его пригодным для выполнения примером.

2. Более простой способ сделать это-использовать вычитание, teamOneQuarterOne - teamTwoQuarterOne если результат положительный, то выигрывает команда 1, если побеждает отрицательная команда 2, если ноль, то они оба равны. вы можете поиграть с логическими значениями, чтобы проверить идеальный квартал, добавив 1 или 0 к обоим значениям teamOnePerfectQuarter = teamTowQuarterOne == 0 ? 1 : 0; и teamTowPerfectQuarter = teamOneQuarterOne == 0 ? 1 : 0;

Ответ №1:

Похоже, вы ожидаете, что эти строки увеличат идеальное количество.

 if (teamOneQuarterOne == 0 amp;amp; teamTwoQuarterOne > 0) {
             teamTwoPerfectQuarter  ;        }
 

Но эти строки актуальны только в том случае, если условие огибания верно

 if (teamOneQuarterOne > teamTwoQuarterOne)
 

Но и то, и другое не может быть истинным одновременно.

Похоже, вы не туда поместили эти строки, я бы ожидал их здесь:

 if (teamOneQuarterOne < teamTwoQuarterOne) {
         teamOneStats  = "L-";
         teamTwoStats  = "W-";
         /* here */
     }
 

Ответ №2:

Попробуйте разделить условия «сравнения» и условия «проверки совершенства» на две отдельные ветви if-else

 class Example {
  public void main(String[] args) {
    if (teamOneQuarterOne > teamTwoQuarterOne) {
      teamOneStats  = "W-";
      teamTwoStats  = "L-";
    } else if (teamOneQuarterOne < teamTwoQuarterOne) {
      teamOneStats  = "L-";
      teamTwoStats  = "W-";
    } else {
      teamOneStats  = "T-";
      teamTwoStats  = "T-";
    }

    if (teamOneQuarterOne == 0 amp;amp; teamTwoQuarterOne > 0) {
      teamTwoPerfectQuarter  ;
    } else if (teamTwoQuarterOne == 0 amp;amp; teamOneQuarterOne > 0) {
      teamOnePerfectQuarter  ;
    }
    System.out.println(teamOne   " Perfect Quarters: "   teamOnePerfectQuarter);
    System.out.println(teamTwo   " Perfect Quarters: "   teamTwoPerfectQuarter);
  }
}