2016-01-10 2 views
-4

Я пытаюсь исправить небольшую программу для учащихся. У меня есть класс для студентов. и в моей основной программе я добавляю ученика в ArrayList через вход. и позже я хочу добавить много оценок для exat этого ученика.Многие оценки для студенческого массива

Что мне делать? Я бы предпочел использовать массив. Но я не знаю как . Могу ли я создавать новый массив каждый раз, когда я создаю нового ученика и добавляю оценки?

private String name; 
private float grade; 


public void student(String name, float grade){ 
    this.name = name; 
    this.grade = grade; 

} 

public String getName(){ 
    return name; 
} 


public float getGrade(){ 
    return grade; 
} 







public String toString(){ 
    return String.format(name + " have grades " + grade);       
} 
+1

Используйте 'LinkedList', если размер коллекции динамичен – mic4ael

+1

Итак, что вы просите? – Lopan

+0

или hashmap, но вам потребуется массив внутри класса ученика для классов, у вас есть список студенческих объектов, каждый объект-ученик должен иметь имя, массив градаций и т. Д. И т. Д. Дизайн данных очень важен, прежде чем начинать писать Программа. –

ответ

0

Просто измените оценки с поплавка на массив поплавков.

public class Student{ 
     private String name; 
     private float[] grades; 


     public void Student(String name, float[] grades){ 

      this.name = name; 
      this.courses = Arrays.copyOf(grades, grades.length); 

     } 

     public String getName(){ 
      return name; 
     } 


     public float getGradeAtIndex(int index){ 
      return grades[index]; 
     } 

    // Add methods, getters, setters as you wish. 
} 

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

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

надеюсь, что это поможет, удачи.

+0

В этом случае он должен знать количество оценок перед созданием ученика. Он не говорит, знает ли он или нет, поэтому я бы использовал динамический ArrayList – Lopan

0

Если у вас есть неизвестное количество оценок на одного учащегося, используйте оценки ArrayList.

public class Student{ 
    private String name; 
    private ArrayList<float> grades; 


public void student(String name){ 
    this.name = name; 

} 

public String getName(){ 
    return name; 
}  

public void addGrade(float grade){ 
    this.grades.add(grade); 
} 

public String toString(){ 
    return String.format(name + " have grades " + grade);       
} 

Не забудьте импортировать его из java.util.ArrayList. Проверьте документацию here.

+0

. Конструкторы и геттеры будут немного сложнее обрабатывать. –

+0

Да, но он может использовать все функции, которые уже имеет «ArrayList». Обработка большего количества классов более сложна, чем только один класс от ученика, но также имеет больше возможностей. – Lopan

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