【发布时间】:2015-04-18 14:01:39
【问题描述】:
我正在创建一个程序,该程序将充当注册寄存器,允许用户在课程中添加和删除学生、搜索学生、报告学生数据并将这些数据保存到文件中。我再次在网站上发帖的原因是我的AddStudent() 方法似乎没有维护学生姓名变量。例如,我的搜索方法搜索存储数据的学生数组并打印搜索到的学生数据,或者至少应该如此,但是当您添加多个学生时,名称变量会更改为最近输入的学生的名称,从而打印每个学生都认为他们都有相同的名字。它也为我的保存方法执行此操作,它将学生数据保存在一个文件中,但所有数据都具有相同的名称,其他数据均不重复。到目前为止,我有这个:
public static void AddStudent() {
String sName = null;
String dateOB = null;
String address = null;
String GENDER = null;
// create student object
Student studentToAdd = new Student(sName, dateOB, address, GENDER);
// read in name and update student
Scanner scanner = new Scanner(System.in);
System.out.println ("Type Student Name: ");
String name = scanner.nextLine();
Student.Name = name;
// read in and validate date of birth
Scanner scannerDOB = new Scanner (System.in);
System.out.println ("Type Student Date of Birth : ");
String dateOfBirth = scannerDOB.nextLine();
studentToAdd.DateOfBirth = dateOfBirth;
// read in address
Scanner scannerAdd = new Scanner (System.in);
System.out.println ("Type Student Address: ");
String address1 = scannerAdd.nextLine();
studentToAdd.Address = address1;
// read in gender - validate against you're constant?
Scanner scannerGen = new Scanner (System.in);
System.out.println ("Type Student Gender\n M for Male \n F for Female: ");
String gender = scannerGen.nextLine();
studentToAdd.Gender = gender;
// Add to the array in the last free location
Students [nextFreeLocation] = studentToAdd;
}
【问题讨论】:
-
Students 数组在哪里定义,nextFreeLocation 在哪里定义?
-
请删除所有提及截止日期的内容,因为这与问题本身无关,真的不是我们关心的问题,并且可能会增加对您问题的反对票。关于您的代码,我想知道您的程序是否需要重新构造,例如通过创建一个具有非静态 Student[] 数组和一个非静态
public void addStudent(Student student)方法的 School 类,其中没有用户交互.用户交互代码应该放在别处。 -
已编辑问题并删除了对截止日期的提及。
-
您确定
studentToAdd变量中存储的内容与您输入的内容一样正确吗? -
我想是的,我已经将所有变量引用回学生类的构造函数变量。如果有帮助,我还在调用该方法后增加 nextFreeLocation?
标签: java arrays variables search