Итак, у меня есть задание, и мне нужно рассчитать среднее значение каждого студенческого знака для каждого задания, а затем рассчитать среднее значение для каждого задания. Я могу рассчитать среднее значение для каждого учащегося, но у меня возникают проблемы со средним значением для каждого задания, а также для среднего значения средних значений. Тогда мне также нужно рассчитать стандартное отклонение, нам дано уравнение, но я не уверен, как его реализовать.Получение данных из массива 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!
Я сделал редактирование. Можете ли вы мне помочь в этом? – JavaRookie
Стандартное отклонение хорошо описано в википедии: http://en.wikipedia.org/wiki/Standard_deviation#Basic_examples – lordoku