dude_manni Ответов: 1

Написать java-программу, чтобы вычислить, сколько побед было у "Манчестер Юнайтед"?


Команда code ground - это закоренелый фанат "Манчестер Юнайтед" (#MANU), который хочет, чтобы вы создали Java-приложение для выполнения следующей задачи в английской Премьер-лиге.

Настройте строковую переменную для хранения следующих результатов

Результаты строк = "Манчестер Юнайтед 1 Челси 0, Арсенал 1 Манчестер Юнайтед 1, Манчестер Юнайтед 3 Фулхэм 1, Ливерпуль 1 Манчестер Юнайтед 1, Суонси 2 Манчестер Юнайтед 4";

Напишите программу, чтобы вычислить, сколько побед было у "Манчестер Юнайтед", сколько игр они сыграли вничью и сколько "Манчестер Юнайтед" проиграл.

Расширьте программу, чтобы выяснить, сколько голов забил "Манчестер Юнайтед" и сколько они пропустили.

Предположим, что выигрыш приносит вам 3 очка, ничья-1 очко, а проигрыш-ни одного очка. Пусть ваша программа определит, сколько очков в общей сумме набрал "Манчестер Юнайтед".

Выход для вышеперечисленного будет следующим

Победы 3

Розыгрыши 1

Поражения 1

Забитых Мячей 10

Пропущено Голов 6

Всего Баллов 10

Входной Сигнал Образца:

5

Манчестер Юнайтед 1 Челси 0

Арсенал 1 Манчестер Юнайтед 1

Манчестер Юнайтед 3 Фулхэм 1

Ливерпуль 2 Манчестер Юнайтед 1

Суонси 2 Манчестер Юнайтед 4

Пример Вывода:

Победы 3

Розыгрыши 1

Поражения 1

Забитых Мячей 10

Пропущено Голов 6

Всего Баллов 10

Подсказка: во входных данных одна из двух команд всегда будет "ManchesterUnited". В первой строке входных данных находится количество игр, далее следуют n строк в формате цель КОМАНДА1 команда2 цели. Название команды будет состоять из одного слова.

Что я уже пробовал:

import java.util.Scanner;
public class BPL
{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        String results="Manchester United 1 Chelsea 0, Arsenal 1 Manchester United 1,Manchester United 3 Fulham 1,Liverpool 1 Manchester United 1,Swansea 2 Manchester United 4";
        String result_array[]=results.split(",");
        int number_of_wins=0;
        int number_of_draws=0;
        int number_of_defeats=0;
        int number_of_points=0;
        int goals_scored=0;
        int goals_conceded=0;
        for(int i=0;i<result_array.length;i++)
        {
           String the_result=getResults(result_array[i].trim());
           String[] match_facts=the_result.split("-");
           if(match_facts[0].equals("0"))
           {
               number_of_defeats++;
           }
           if(match_facts[0].equals("1"))
           {
               number_of_draws++;
               number_of_points=number_of_points + 1;
           }
           if(match_facts[0].equals("3"))
           {
               number_of_wins++;
               number_of_points=number_of_points + 3;
           }
           goals_scored=goals_scored+Integer.parseInt(match_facts[1]);
           goals_conceded=goals_conceded+Integer.parseInt(match_facts[2]);
        }
        System.out.println("Wins "+number_of_wins);
        System.out.println("Draws "+number_of_draws);
        System.out.println("Defeats "+number_of_defeats);
        System.out.println("Goal Scored "+goals_scored);
        System.out.println("Goals Conceded "+goals_conceded);
        System.out.println("Total Points "+number_of_points);
    }
    
    public static String getResults(String result)
    {
        String points_and_goals="";
        String[] result_array=result.split(" ");
        int first_score=0;
        int second_score=0;
        int counter=0;
        for(int i=0;i<result_array.length;i++)
        {
            try
            {
                int outputValue=0;
                outputValue=Integer.parseInt(result_array[i]);
                if(counter==0)
                {
                    first_score=outputValue;
                    counter++;
                }
                else
                {
                    second_score=outputValue;        
                }
            }
            catch(NumberFormatException e){}
        }
        String HOME_WIN="3";
        String AWAY_WIN="3";
        String DRAW="1";
        String LOSS="1";
        int man_utd=result.indexOf("Manchester United");
        if(man_utd==0)
        {
            if(first_score>second_score)
            {
                points_and_goals=HOME_WIN+"-"+first_score+"-"+second_score;    
            }
            else if(second_score>first_score)
            {
                points_and_goals=LOSS+"-"+first_score+"-"+second_score;
            }
            else if(first_score==second_score)
            {
                points_and_goals=DRAW+"-"+first_score+"-"+second_score;
            }
        }
        else if(man_utd>0)
        {
            if(second_score>first_score)
            {
                points_and_goals=AWAY_WIN+"-"+second_score+"-"+first_score;
            }
            else if(first_score>second_score)
            {
                points_and_goals=LOSS+"-"+second_score+"-"+first_score;    
            }
            else if(first_score==second_score)
            {
                points_and_goals=DRAW+"-"+second_score+"-"+first_score;    
            }
        }
        return points_and_goals;
    }
}

wseng

что не так с текущим выходом ?

dude_manni

Выход
Победы 3
Розыгрыши 2
Поражений 0
Гол, Забитый 10
Пропущено Голов 5
Всего Баллов 11

Нужен Выход

Победы 3
Розыгрыши 1
Поражения 1
Забитых Мячей 10
Пропущено Голов 6
Всего Баллов 10

Patrice T

показать входные данные.

dude_manni

Я не ввожу просто объявленный ввод в качестве переменной результата

Richard MacCutchan

Вы действительно проверяли баллы по вашей входной строке (Результаты строк = "Манчестер Юнайтед 1 Челси 0, Арсенал 1 Манчестер Юнайтед 1, Манчестер Юнайтед 3 Фулхэм 1, Ливерпуль 1 Манчестер Юнайтед 1, Суонси 2 Манчестер Юнайтед 4";? Он показывает 3 победы и 2 ничьи.

Kornfeld Eliyahu Peter

Манчестер Юнайтед 1 Челси 0 - победа
Арсенал 1 Манчестер Юнайтед 1 - ничья
Манчестер Юнайтед 3 Фулхэм 1 - победа
Ливерпуль 1 Манчестер Юнайтед 1 - ничья
Суонси 2 Манчестер Юнайтед 4 - победа

Так что ваш код дает правильный ответ! Где вы видите поражение?

Mohibur Rashid

Вы пробовали отладку?

1 Ответов

Рейтинг:
2

OriginalGriff

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а затем удвоить его и напечатать ответ, то если бы ввод / вывод был таким:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
private int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поставить точку останова на строке:
for(int i=0;i<result_array.length;i++)

и запустите свое приложение. Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она на самом деле делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?

Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!