Массивы и циклы программы подсчета очков Java Volleyball

Я новичок в программировании. Пожалуйста, будь со мной нежнее. Мне поручили создать программу, которая сравнивает результаты двух соревнующихся волейболистов. Чтобы выиграть матч по волейболу, команда должна набрать 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.");
              }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
687
1

Ответы 1

Что ж, есть только несколько правил для законченных игр, которые я вижу:

  • Ни одна из команд не может иметь отрицательных очков.
  • Как минимум одна команда должна набрать 25 или более очков.
  • Очки для команды не могут быть выше 25, если только они не на два очка выше или ниже другой команды.

Итак, как мы это сделаем? С некоторыми операторами 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 13.10.2018 15:52

@bsheps Это хороший момент, и я добавил его к ответу.

Chai T. Rex 13.10.2018 15:54

Другие вопросы по теме