2015-03-08 3 views
1

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

StudentData

public class StudentData 
{ 
    private NumberFormat fmt = NumberFormat.getCurrencyInstance(); 

    private String firstName; 
    private String lastName; 
    private double[] testScores; 
    private char grades; 
    public double average; 
    public double total; 

    public StudentData (String firstName, String lastName, double[] scores) 
    { 
    this.firstName = firstName; 
    this.lastName = lastName; 

    grades = courseGrade(scores); 

    if (scores.length == 0) 
    throw new IllegalArgumentException("There are no grades for this student"); 
    else 
    testScores = scores; 
} 

    public char courseGrade(double[] list) 
{ 

    for (int x = 0; x < list.length; x++) 
    total += list[x]; 
    average = total/list.length; 
    if (average >= 90) 
    return 'A'; 
    if (average < 90 && average >= 80) 
    return 'B'; 
    if (average < 80 && average >= 70) 
    return 'C'; 
    if (average < 70 && average >= 60) 
    return 'D'; 
    else 
    return 'F'; 

} 

public String toString() 
{ 
    return firstName + " " + lastName + " " + fmt.format(testScores); 
} 

}

TestProgStudentData

public class TestProgStudentData 
{ 
    public static void main(String[] args) 
    { 
    double[] scores; 
    List<StudentData> students = new ArrayList<StudentData>(); 
    scores = {79.00, 94.00, 86.00, 72.00, 90.00}; 
    students.add(new StudentData("Gaby", "Gomez", scores)); 
    scores = {85.00, 67.00, 86.00, 100.00, 93.00}; 
    students.add(new StudentData("David", "Gomez", scores)); 

    for(StudentData f : students) 
    System.out.println(f); 

    } 
} 
+0

Используйте арг массив String, чтобы собрать имя и результаты из командной строки –

+0

Я думаю, что вы хотели бы изменить «Габи» 's оценки без новый объект, правильно? – Cebrian92

+0

Изменить его на что? –

ответ

0

Если вы хотите изменить значение баллов, не создавая новый объект, то вы должны добавить новая функция для этого:

public void changeScore(int index, double newScore) 
{ 
    this.testScores[index] = newScore; 
} 
0

Константы массива могут использоваться только в инициализаторах. Компилятор не может распознать тип массива.

Например:

«а = {...}» не ясно компилятору, что тип

Object[] a; 
a = {"Hello", "World"}; // use String[] or Object[] ? 

Он мог смотреть на объявленный тип (так Object [ ]), но поскольку он все еще неоднозначен, компилятор запрещает его.

Это то, что вы ищете Why can array constants only be used in initializers?

+0

вы могли бы пометить этот вопрос как дубликат. (поскольку вы указали ссылку на аналогичную тему ...) – KarelG

0

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

StudentData student1 = new StudentData("Gaby", "Gomez", 79.00, 94.00, 86.00, 72.00, 90.00); 

System.out.println(student1); 
Смежные вопросы