Как рассчитать среднее значение по данным, прочитанным в файле

Я пытаюсь получить все имена из одного файла и все данные о посещаемости из другого, а затем подсчитать среднюю посещаемость. Я знаю, что бит att в вычислении совершенно неправильный, но я не мог его решить.

{
    ArrayList<Match> ourList = new ArrayList(teams);


    ArrayList<Match> teamsAttendance = new ArrayList<Match>();
    for (Match att : ourList)
    {
        if (att != null && att.getTeamName().equals(team.getName()))
        {
            teamsAttendance.add(att);
        }
    }

    double attendance = 0; //start attendance as 0
    for (int i = 0; i < att.length; i++)
    {
      attendance += att[i];  
    }
    return attendance / att.length;
}

person Rich Kid    schedule 21.08.2015    source источник
comment
Вы можете разместить информацию о массиве att? И в чем ваша текущая проблема с этим кодом?   -  person Tom    schedule 21.08.2015
comment
Вместо того, чтобы дать вам ответ, я хотел бы, чтобы вы помогли вам разобраться. Почему вы говорите, что бит att в вычислении совершенно неправильный? Он не компилируется? Если да, то каково сообщение об ошибке от компилятора?   -  person dsh    schedule 21.08.2015
comment
Ваш код компилируется? Кажется, что att - это Match экземпляр, но вы пытаетесь добавить его в double   -  person vsnyc    schedule 21.08.2015
comment
Возможно, вам стоит просто подсчитать каждое появление team.getName () и разделить на teamAttendance.size (), приведя все эти значения к удвоению   -  person Jib'z    schedule 21.08.2015
comment
@Tom att - это то, что я думал, будет новым именем для созданного массива явок, взятых из файла   -  person Rich Kid    schedule 21.08.2015
comment
@dsh Я почти уверен, что att не должен был присутствовать в расчетах, однако я просто поместил его туда, пока пытался разобраться в проблеме.   -  person Rich Kid    schedule 21.08.2015
comment
@ Jib'z, ты бы сказал, что это лучшее решение?   -  person Rich Kid    schedule 21.08.2015
comment
@RichKid в опубликованном вами коде att - это неопределенное имя. Он нигде не объявлен и поэтому не будет компилироваться. other att - это локальная переменная в цикле, поэтому не существует вне цикла (и является экземпляром Match, а не массивом).   -  person dsh    schedule 21.08.2015
comment
@RichKid в опубликованном вами коде отсутствует объяснение, и поэтому с предоставленной вами информацией, предполагая, что «ourList »содержит все совпадения, и что вы ищете единую команду, это то, что я бы сделал. Но я бы разделил на «ourList.size () », а не на второй, о чем я говорил тебе раньше.   -  person Jib'z    schedule 21.08.2015
comment
@dsh Я пытался использовать найденный мной фрагмент кода в качестве ориентира, но я не мог понять, как включить его в свой фрагмент кода. 'публичное статическое двойное среднее (двойное [] м) {двойная сумма = 0; для (int i = 0; i ‹m.length; i ++) {sum + = m [i]; } возврат суммы / м длины; } '   -  person Rich Kid    schedule 21.08.2015
comment
@ Jib'z, я думаю, это похоже на то, чего я пытался достичь, не могли бы вы привести пример этого, поскольку я действительно изо всех сил пытаюсь полностью осмыслить все это.   -  person Rich Kid    schedule 21.08.2015
comment
@ Jib'z извините за отсутствие объяснения. В файле указаны различные названия команд, а в другом - данные о посещаемости матчей. Я пытаюсь написать кусок кода, который находит среднюю посещаемость для каждой команды.   -  person Rich Kid    schedule 21.08.2015
comment
Это основная математика: посчитайте все, что вам нужно, и разделите на общее количество. Я не могу объяснить это лучше   -  person Jib'z    schedule 21.08.2015
comment
@RichKid код, который вы добавили в комментарий, верен в том виде, в каком он был представлен: он усредняет набор чисел; вам нужно выяснить, как ваша структура данных может стать набором чисел, чтобы делать математику. Его нельзя скопировать напрямую, потому что у вас еще нет чисел для математических расчетов, а у нас нет понимания ваших данных и того, что вы на самом деле пытаетесь вычислить.   -  person dsh    schedule 25.08.2015


Ответы (1)


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

{
    ArrayList<Match> ourList = new ArrayList(teams);


    ArrayList<Match> teamsAttendance = new ArrayList<Match>();

    //to store the attendance mean for each team
    ArrayList<double> teamAttendanceMean = new ArrayList<double>();

    //to store the attendance values of team
    ArrayList<double> tempAttendance= new ArrayList<double>();



    //declare outside
    double attendance = 0; 

    for (Match att : ourList)
    {
        if (att != null && att.getTeamName().equals(team.getName()))
        {
            teamsAttendance.add(att);
        }
        attendance = 0;// assign 0
        tempAttendance = att.getTeamAttendance();
         for (int i = 0; i < tempAttendance.size(); i++)
         {
              attendance += tempAttendance [i];  
         }             

         //storing the mean value
         teamAttendanceMean.add(attendance/tempAttendance.size());

    }

}

Сообщите мне, если какое-либо из моих предположений неверно, а также опубликуйте информацию о классе Match, если это так.

person Saurabh Nailwal    schedule 21.08.2015