如何在main方法中打印数组指定索引位置的学生信息?
问题描述
我已经一年多没写代码了,完全记不起相关知识,开了上百个标签页重新学习但还是彻底卡壳了。我需要在StudentDatabase类中实现打印指定索引位置学生全部信息的功能,目前代码卡壳,不知道该怎么继续。
我的Main方法代码
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { StudentDatabase database = new StudentDatabase(); database.addStudent("Joe Schmo", 1101, 3.2); database.addStudent("Katie Katerson", 31415926, 3.7); database.addStudent("Watson TheBassetHound", 12345, 2.4); database.printDatabase(); StudentDatabaseLL databaseLL = new StudentDatabaseLL(); databaseLL.addStudent("Joe Schmo", 1101, 3.2); databaseLL.addStudent("Katie Katerson", 31415926, 3.7); databaseLL.addStudent("Watson TheBassetHound", 12345, 2.4); databaseLL.printDatabase(); } }
目前的StudentDatabase代码
public class StudentDatabase { private Student[] database; public StudentDatabase() { database = new Student[0]; } public void addStudent(String name, int idNumber, double gpa) { Student student = new Student(name, idNumber, gpa); Student[] newDatabase = new Student[database.length + 1]; for (int i = 0; i < database.length; i++) { newDatabase[i] = database[i]; } newDatabase[newDatabase.length - 1] = student; database = newDatabase; } public void printDatabase() { for (int i = 0; i < database.length; i++) { Student student = database[i]; System.out.println(student.getName() + ": (ID=" + student.getIdNumber() + "), (gpa=" + student.getGPA() + ")"); System.out.println(); } } public class findStudentbyIndex { public void findStudentbyIndex(String[] args){ int[] intArray = StudentDatabase ) } }
解决思路和代码修改
你不需要单独写一个findStudentbyIndex内部类,直接在StudentDatabase类中新增方法即可,步骤如下:
- 先写一个获取指定索引学生对象的方法,做索引合法性检查,避免数组越界异常;
- 基于获取方法,写一个打印指定索引学生信息的方法,逻辑更清晰。
修改后的完整StudentDatabase代码:
public class StudentDatabase { private Student[] database; public StudentDatabase() { database = new Student[0]; } public void addStudent(String name, int idNumber, double gpa) { Student student = new Student(name, idNumber, gpa); Student[] newDatabase = new Student[database.length + 1]; for (int i = 0; i < database.length; i++) { newDatabase[i] = database[i]; } newDatabase[newDatabase.length - 1] = student; database = newDatabase; } public void printDatabase() { for (int i = 0; i < database.length; i++) { Student student = database[i]; System.out.println(student.getName() + ": (ID=" + student.getIdNumber() + "), (gpa=" + student.getGPA() + ")"); System.out.println(); } } // 获取指定索引的学生对象,带合法性检查 public Student getStudentByIndex(int index) { if (index < 0 || index >= database.length) { System.out.println("索引无效,请输入0到" + (database.length - 1) + "之间的数字"); return null; } return database[index]; } // 打印指定索引的学生信息 public void printStudentByIndex(int index) { Student student = getStudentByIndex(index); if (student != null) { System.out.println("索引" + index + "的学生信息:"); System.out.println(student.getName() + ": (ID=" + student.getIdNumber() + "), (gpa=" + student.getGPA() + ")"); } } }
测试功能
你可以在Main方法中添加测试代码,验证功能是否正常:
public static void main(String[] args) { StudentDatabase database = new StudentDatabase(); database.addStudent("Joe Schmo", 1101, 3.2); database.addStudent("Katie Katerson", 31415926, 3.7); database.addStudent("Watson TheBassetHound", 12345, 2.4); database.printDatabase(); // 测试打印指定索引的学生 database.printStudentByIndex(1); // 打印Katie的信息 database.printStudentByIndex(5); // 索引无效,提示错误 }
内容的提问来源于stack exchange,提问作者user16052567
相关产品推荐
相关产品推荐

