Я новичок в программировании. Пожалуйста, будь со мной нежнее. Мне поручили создать программу, которая сравнивает результаты двух соревнующихся волейболистов. Чтобы выиграть матч по волейболу, команда должна набрать 25 очков. Но команда также должна выиграть со счетом 2. Этим двум командам предстоит сыграть по пять матчей.
Программа должна принимать от пользователя результаты каждой команды по одному матчу за раз. Если в любой момент этот пользователь вводит оценки, которые нарушают правило 25 очков или правило «выиграть с 2 очками», распечатайте ошибку на экране и заставьте пользователя снова ввести оба результата.
Когда пользователь закончит вводить счет, выведите, какая команда выиграла игру, то есть команда, выигравшая больше всего матчей.
В этом задании вы должны использовать массивы и циклы.
Моя программа оценивает только первый набор оценок в массиве.Как мне заставить его хранить все пять наборов партитур?
public static void main(String[] args) {
int team1[];
int team2[];
team1=new int[5];
team2=new int[5];
int counter1=0;
int counter2=0;
int k = 0;
for (int i=0;i<=4;i++){
Scanner scanint = new Scanner(System.in);
System.out.println("Enter the number of points Team 1 earned in Match " + (i+1));
team1[i] = scanint.nextInt();
System.out.println("Enter the number of points Team 2 earned in Match " + (i+1));
team2[i] = scanint.nextInt();
////////////////////////////////////////////
if (team1[i] < 25 & team2[i] < 25){
System.out.println("That cannot be. One team must get at least 25 points. Please re-enter the data.");
System.out.println("Enter the number of points Team 1 earned in Match " + (i+1));
team1[i] = scanint.nextInt();
System.out.println("Enter the number of points Team 2 earned in Match " + (i+1));
team2[i] = scanint.nextInt();
}
else if (team1[i] - team2[i] < 2 || team2[i] - team1[i] < 2){
System.out.println("That can't be. One team must win by at least two points. Please re-enter the data.");
System.out.println("Enter the number of points Team 1 earned in Match " + (i+1));
team1[i] = scanint.nextInt();
System.out.println("Enter the number of points Team 2 earned in Match " + (i+1));
team2[i] = scanint.nextInt();
}
else {
System.out.println("Enter the number of points Team 1 earned in Match " + (i+1));
team1[i] = scanint.nextInt();
System.out.println("Enter the number of points Team 2 earned in Match " + (i+1));
team2[i] = scanint.nextInt();
}
/////////////////////////////////////////////
if (team2[i] < team1[i]){
counter1++;}
else{ counter2++;}
}
if (counter1 > counter2) {
System.out.println("Team 1 has won the game.");}
else{
System.out.println("Team 2 has won the game.");
}




Что ж, есть только несколько правил для законченных игр, которые я вижу:
Итак, как мы это сделаем? С некоторыми операторами if для каждого правила. Для первого правила:
if ((team1 < 0) || (team2 < 0)) {
System.err.println("A score cannot be negative!");
i--;
continue;
}
Для второго правила:
if ((team1 < 25) && (team2 < 25)) {
System.err.println("At least one team has to have 25 or more points!");
i--;
continue;
}
Для третьего правила (его можно преобразовать в один оператор if с помощью &&, но я сделал его немного проще для понимания):
if ((team1 > 25) || (team2 > 25)) {
if ((team1 - team2 != 2) && (team2 - team1 != 2)) {
System.err.println("If a team has more than 25 points, the other team must be two points away from it!");
i--;
continue;
}
}
Обратите внимание, что continue; означает переход к следующей итерации цикла, в котором вы находитесь. Итак, вы переходите к предыдущей итерации с i--; и переходите к следующей итерации с continue;. Это уловка, позволяющая перезапустить текущую итерацию цикла, в котором вы находитесь.
Кроме того, я бы не стал использовать массивы, если не использовал оценки где-то вне цикла ввода исходных данных (хотя вы должны следовать правилам присвоения и использовать их в любом случае). Я немедленно указывал, когда результаты игры были недействительными, и я отслеживал победы обеих команд по некоторым переменным, например int team1Wins = 0; и int team2Wins = 0;.
@bsheps Это хороший момент, и я добавил его к ответу.
Привет, Чай, просто хотел отметить, что я думаю, что она могла использовать массивы для хранения результатов игры. Возможно, чтобы посмотреть их позже.