我正在开发一个使用数组列表创建学生列表的项目。我知道如何创建一个简单的数组列表,但是,我决定要使用Scanner方法。不幸的是,这就是我的麻烦开始的地方。这是我的起源类的样子:
import java.util.Scanner;
/**
* Used to create a single student.
*/
public class Student
{
private String Name;
private int Age;
private String Gender;
private int heightInches; //inches%maxInches
private int heightFeet; //inches/maxInches
private int Inches;
private final int maxInches = 12;
private int Weight;
private String Position;
private Scanner keybd;
/**
* Constructor
*/
public Student(){
keybd = new Scanner(System.in);
setStudent();
}
/**
* Method to create a student
*/
public void setStudent(){
System.out.println("Enter name of student:");
Name = keybd.next();
System.out.println("Enter age of student:");
Age = keybd.nextInt();
System.out.println("Enter gender of student:");
Gender = keybd.next();
System.out.println("Enter height in inches of student:");
Inches = keybd.nextInt();
if(Inches>= maxInches){
heightFeet = Inches/maxInches;
heightInches = Inches%maxInches;
}
else{
heightInches = Inches%maxInches;}
System.out.println("Enter position of user:");
Position = keybd.next();
System.out.println("Enter weight of student:");
Weight = keybd.nextInt();
}
/**
* Returns height of student
*/
public void getHeight(){
System.out.println(heightFeet + "'" + heightInches + "''");
}
/**
* Prints details of student
*/
public void printDetails(){
if((Position.equals("Doctor")) || (Position.equals("Coach"))){
System.out.println(Name + " who is a " + Age + " year old " + Gender + " weighs " + Weight + " and is ");
getHeight();}
else{System.out.println(Name + " who is a " + Age + " year old " + Gender + " is ");
getHeight();
}
}
}
不幸的是,当我尝试在我的新类中调用setStudent方法时,为了实际制作列表而调用Students类,我遇到了问题。我真的希望有一个“if”语句和一个Scanner,如果用户希望添加另一个学生它会循环,否则它会结束,但是,因为我甚至无法使用上面的代码创建一个新学生,它不是甚至值得我花时间尝试尝试。
答案 0 :(得分:1)
每个Student对象都是其自己的Student类实例。当您在构造函数中读取所有数据时,您将使用该特定的Student对象。你可以在构造函数中创建一个循环,创建新的Student对象,但这会让人很困惑 - 毕竟,构造函数的工作是创建一个对象。
(除此之外,让构造函数请求用户输入是不好的方式。它使得类在单元测试中不可测试,并且它将它与控制台联系起来,使其在GUI程序中无法使用。你会更好通过读取其他地方的所有学生数据,然后将其传递给学生构造函数。)
因此,一些代码在之外的学生班级,例如你的主要方法)应该有学生列表,收集输入,并创建学生对象。
答案 1 :(得分:0)
我决定尝试保持简单(很长一段时间我第一次采取简单的方法) 在我的新课程中,我把它放在:
/**
* Method to add more students
*/
public void addStudent(){
studentList.add (new Student());
}
从好的方面来说,现在我可以尝试使用if-else方法添加更多学生。