【问题标题】:AddStudent() method will not maintain a name variableAddStudent() 方法不会维护名称变量
【发布时间】: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


【解决方案1】:

我建议您从根本上重新设计您的程序,包括:

  • 创建一个包含 ArrayList<Student>(不是数组)的 Course 类,例如称为 students
  • 为此类提供公共非静态 public void addStudent(Student student) 方法,允许外部课程将学生添加到课程的学生列表中。
  • 将您的用户界面 (UI) 代码(包括使用扫描仪的所有代码)与课程代码分开。
  • 是的,UI 代码也可以有一个非静态的addStudent 方法,它从用户那里获取学生信息,创建一个学生对象,然后调用课程的addStudent(...) 方法。
  • 有一个单独的类,用于在文件中保存和上传数据。

当然,所有这些都取决于您的作业要求,如果这些建议中的任何一个与这些要求相冲突,请告诉我。

【讨论】:

  • 我觉得这家伙没有 UI 所以他用Scanner
  • @Blip:他有一个控制台用户界面,这是一个用户界面,虽然很原始。
  • @Blip 我相信你的意思是 GUI?
  • @bot 是的,现在我明白我的评论有什么问题了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2013-06-24
  • 2012-03-08
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多