![](/img/trans.png)
[英]I need to create a program that will add, remove, list, save, and sort students in a created Student, Undergrad, and Graduate classes
[英]I need to take data from input and create a Student class with Students grades in an array
我在創建學生課程時遇到問題。 我的輸入文件是這樣的:
3 //number of exams
Audrey 7 28 1
Eddie 27 19 7
Addison 6 23 31
Stephanie 29 21 7
Laura 19 30 17
我需要用一個構造函數創建一個學生類,比如public Student(String name, int[] Student Grades)
。
問題是我不能創建一個有 3 個等級的學生,我需要創建:學生 Audrey 的等級為 [7, 28, 1] 或學生 1 Name Audrey Grades[ 7,28,1]
我試過但不能為第一個學生放置前 3 個變量。
我怎樣才能做到這一點?
更新我的工作:
File file = new File("info1.txt");
Scanner input = new Scanner(file);
int []grade = new int[3];
int counter = 0;
Student[] students = new Student[9];
while(input.hasNext()) {
String Studentread= input.nextLine();
for (int i = 0; i < grade.length; i++) {
grade [i] = input.nextInt();
}
System.out.println(grade.toString());
students[counter] = new Student(Studentread, grade);
System.out.println(students[counter].getName() + " " + students[counter].getStudentGrades());
counter++;
input.close();
}
班級學生:
private String Name;
public int [] StudentGrades;
public Student(String name, int[] StudentGrades) {
this.Name = name;
this.StudentGrades = StudentGrades;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int[] getStudentGrades() {
return StudentGrades;
}
public void setStudentGrades(int[] studentGrades) {
StudentGrades = studentGrades;
}
您可以逐行讀取並使用空格分隔符將行拆分為數組。 或者按空格解析紅線。
最好使用Scanner
逐行讀取文件,而不是逐個令牌。 這是因為文件中的每一行都有一個含義。 並直接匹配到Student
我對代碼進行了注釋,以便您了解每一行在做什么:
public static void main(String[] args) throws IOException {
// read all the lines of your file
List<String> lines = Files.readAllLines(Paths.get("info1.txt"));
// first line is the number of exams
int nbExams = Integer.valueOf(lines.get(0).trim());
// remove first line, now each line is a student
lines.remove(0);
int nbStudents = lines.size();
Student[] students = new Student[nbStudents];
for(int iStudents = 0; iStudents<nbStudents; iStudents++) {
String line = lines.get(iStudents);
// split your line on spaces
String[] tokens = line.split(" ");
// first is name
String studentName = tokens[0];
// next are studentGrades
int[] grades = new int[nbExams];
for(int i=0; i<nbExams; i++) {
grades[i] = Integer.valueOf(tokens[i+1]);
}
students[iStudents] = new Student(studentName, grades);
}
System.out.println(Arrays.toString(students));
}
筆記:
studentGrades
,不StudentGrades
)。 大寫保留給類和接口toString
方法添加到您的學生類,以便您可以很好地打印它們Student
類上使用 setter。 您的Student
類應如下所示:
class Student {
private String name;
private int[] studentGrades;
public Student(String name, int[] studentGrades) {
this.name = name;
this.studentGrades = studentGrades;
}
public String getName() {
return name;
}
public int[] getStudentGrades() {
return studentGrades;
}
@Override
public String toString() {
return "Student{" +
"name=" + name + ", " +
"studentGrades=" + Arrays.toString(studentGrades) +
"}";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.