2013-09-27 5 views
0

Итак, у меня есть задание, и мне нужно рассчитать среднее значение каждого студенческого знака для каждого задания, а затем рассчитать среднее значение для каждого задания. Я могу рассчитать среднее значение для каждого учащегося, но у меня возникают проблемы со средним значением для каждого задания, а также для среднего значения средних значений. Тогда мне также нужно рассчитать стандартное отклонение, нам дано уравнение, но я не уверен, как его реализовать.Получение данных из массива ArrayList для использования в вычислениях?

Окончательные из пут должны выглядеть следующим образом:

Student Name  FAN  Part 1 Part 2 Part 3 Part 4 Mark Grade 
Adam Adamson  adam0001 85.4 79.8 82.4 86.1 82.77% DN 
Bethany Bright brig0001 89.7 85.6 84.2 82.9 84.92% DN 
Cameron Carlson carl0001 55.45 49.82 60.4 42.27 50.23% P 
David Dawson  daws0001 72.6 78.49 80.2 65.88 74.46% CR 
Evelyn Ellis  elli0001 50.2 35.88 48.41 58.37 46.57% FA 
Frances Fitz  fitz0001 78.9 75.67 82.48 79.1 78.38% DN 
Greg Gregson  greg0001 24.3 32.88 29.72 28.4 30.05% F 
Harriett Hope hope0001 52.2 58.93 61.5 63.44 60.12% P 
Ivan Indigo  indi0001 88.4 91.23 90.05 92.46 91.08% HD 
Jessica Jones jone0001 82.33 89.74 81.3 84.85 85.84% HD 
        Average 67.948 67.804 70.066 68.377 68.44% CR 
               StdDev 19.4441 

У меня есть 3 класса, 2 только определение массива для студентов имен & поклонников, а затем другой является массивом для студентов знаков. Они не имеют отношения к вопросу.

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

public class TopicManagement 
{ 

public static void main(String[] args) throws IOException 
{ 

    System.out.println("Hello, Welcome to the Student Assesment Calculator"); 
            //added an extra tab before the FAN to adjust for longer names 
    System.out.println("Student Name \t\tFAN \t\tScore 1\tScore 2\tScore 3\tScore 4\tMark\tGrade"); 


    DecimalFormat df2 = new DecimalFormat("#.##"); //rouding to 2 decimal places 
    DecimalFormat df3 = new DecimalFormat("#.###"); //rounding to 3 decimal places 

    String [][] marks = StudentMarks.StudentMarks(); //marks Arrays is the students assignment results 
    String [][] nameFan = Student.Student();   //nameFan is the array containing student names and FANs 


    for (int row = 0; row < marks.length; row++) 
    {           //ROW,COL 
     double score1 = Double.parseDouble(marks[row][2]); //parsing the data from the array into a double 
     double score2 = Double.parseDouble(marks[row][3]); 
     double score3 = Double.parseDouble(marks[row][4]); 
     double score4 = Double.parseDouble(marks[row][5]); 

     double average = score1*0.1 + score2*0.4 + score3*0.2 + score4*0.3;    
     String grade = null; 



     if (85<=average && average<101) //if average is between 85 and 100 
     { 
      grade = "HD"; //High Distinction 
     } 
     else if (75<=average && average<85) //if average if between 75 and 84 
     { 
      grade = "DN"; //Distinction 
     } 
     else if (65<=average && average<75) //if average is between 65 and 74 
     { 
      grade = "CR"; //Credit 
     } 
     else if (50<=average && average<65) //if average is between 50 and 64 
     { 
      grade = "P"; //Pass 
     } 
     else if (45<=average && average<50) //if average is between 45 and 49 
     { 
      grade = "FA"; //Fail Academic 
     } 
     else if (0<=average && average<45) //if average is between 0 and 44 
     { 
      grade = "F"; //Fail 
     } 



     System.out.println(nameFan[row][0] + "\t\t" + nameFan[row][1] + "\t" + marks[row][2] + "\t" + marks[row][3] + "\t" + 
          marks[row][4] + "\t" + marks[row][5] + "\t" + df2.format(average) + "%\t" + grade); 
    } 

    for (int col = 0; col < marks.length; col++) 
    { 
     ArrayList average1 = new ArrayList(10); 
     ArrayList average2 = new ArrayList(10); 
     ArrayList average3 = new ArrayList(10); 
     ArrayList average4 = new ArrayList(10); 

     double part1 = Double.parseDouble(marks[col][2]); 
     double part2 = Double.parseDouble(marks[col][3]); 
     double part3 = Double.parseDouble(marks[col][4]); 
     double part4 = Double.parseDouble(marks[col][5]); 

     average1.add(part1); 
     average2.add(part2); 
     average3.add(part3); 
     average4.add(part4); 

     double average = avera; 
     String grade = null; 

     if (85<=average && average<101) //if average is between 85 and 100 
     { 
      grade = "HD"; //High Distinction 
     } 
     else if (75<=average && average<85) //if average if between 75 and 84 
     { 
      grade = "DN"; //Distinction 
     } 
     else if (65<=average && average<75) //if average is between 65 and 74 
     { 
      grade = "CR"; //Credit 
     } 
     else if (50<=average && average<65) //if average is between 50 and 64 
     { 
      grade = "P"; //Pass 
     } 
     else if (45<=average && average<50) //if average is between 45 and 49 
     { 
      grade = "FA"; //Fail Academic 
     } 
     else if (0<=average && average<45) //if average is between 0 and 44 
     { 
      grade = "F"; //Fail 
     } 

     System.out.println("\t\t\tAverage" + " \t" + average1 + "\t" + average2 + "\t" + average3 + "\t" + 
              average4 + "\t" + df2.format(average) + "%\t" + grade); 
     } 
    }//end of method 
}//end of class 

это выводит:

Hello, Welcome to the Student Assesment Calculator 
Student Name  FAN   Score 1 Score 2 Score 3 Score 4 Mark Grade 
Adam Adamson  adam0001 85.4 79.8 82.4 86.1 82.77% DN 
Bethany Bright  brig0001 89.7 85.6 84.2 82.9 84.92% DN 
Cameron Carlson  carl0001 55.45 49.82 60.4 42.27 50.23% P 
David Dawson  daws0001 72.6 78.49 80.2 65.88 74.46% CR 
Evelyn Ellis  elli0001 50.2 35.88 48.41 58.37 46.56% FA 
Frances Fitz  fitz0001 78.9 75.67 82.48 79.1 78.38% DN 
Greg Gregson  greg0001 24.3 32.88 29.72 28.4 30.05% F 
Harriett Hope  hope0001 52.2 58.93 61.5 63.44 60.12% P 
Ivan Indigo   indi0001 88.4 91.23 90.05 92.46 91.08% HD 
Jessica Jones  jone0001 82.33 89.74 81.3 84.85 85.84% HD 

Стандартное отклонение мы получили было (надеюсь, вы можете интерпретировать):

SD = sqrt(sum of(each value in the data set - mean of all data in the data set)^2) 
divided by  number of values in the data set 

Я не уверен, как идти о том, чтобы эти последние две линии, среднее и стандартное отклонение. Я думаю, что на данный момент у меня есть каждое задание, которое сканируется в ArrayList, поэтому мой вопрос заключается в том, как я затем получаю данные в этом списке массивов, чтобы затем вычислить среднее значение ИЛИ, как бы вы вычислили среднее значение ? Я открыт для любых предложений и был бы признателен, если бы вы могли привести пример с помощью кода.

Спасибо.

         **EDIT** 

Хорошо, поэтому я разработал, как сделать средние значения. Я использовал метод для каждого задания, а затем я называю его основным методом, это первый из 4-х методов:

public static double CalculateAverage1() throws IOException 
{ 
    String [][] marks = StudentMarks.StudentMarks(); 

    double sum = 0; 
    int col = 0; 
    for(col = 0; col < marks.length; col++) 
    {   
     double part1 = Double.parseDouble(marks[col][2]); 

      sum += part1; 

    } 
    return sum/col; 
} 

Я все еще возникают проблемы со стандартным отклонением.

Я даже не могу разобраться с моим калькулятором. Пожалуйста, помогите, или, по крайней мере, выдержите меня в правильном направлении.

Thankyou!

ответ

2

Для каждого столбца, который вы пытаетесь найти сумму, среднее значение и стандартное отклонение, создать переменную для каждого столбца:

double column1 = 0; //Do for other columns 

внутри четыре цикла добавить значение этого столбца:

column1 = column1 + <value at row>; //you could also use shorthand column1+=<value at row> 

Обратите внимание, что скобки являются просто заполнителями. (Я не собираюсь выполнять ваше задание);

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

+0

Я сделал редактирование. Можете ли вы мне помочь в этом? – JavaRookie

+0

Стандартное отклонение хорошо описано в википедии: http://en.wikipedia.org/wiki/Standard_deviation#Basic_examples – lordoku

Смежные вопросы