#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);
}
}