为什么除了null之外什么都不打印?
我正在尝试添加在回答问题时创建的新对象,然后将它们添加到我稍后可以访问的数组中。
public static void main(String[] args) {
// TODO code application logic here
addastudent();
}
private static void addastudent(){
ArrayList<Object> students = new <Object> ArrayList();
Scanner user = new Scanner(System.in);
System.out.println("First Name: " );
String fname = user.next();
System.out.println("Last Name: ");
String lname = user.next();
System.out.println("Major: ");
String major = user.next();
System.out.println("GPA: ");
double gpa = user.nextDouble();
student a = new student (fname,lname,major,gpa);
students.add(a);
System.out.println(students);
}
编辑:感谢您指出toString()问题。就是这样。我忘记了告诉toString()返回Null。当你想念那些简单的东西时,我讨厌它......再次感谢你们。
答案 0 :(得分:0)
更改
ArrayList<Object> students = new <Object> ArrayList();
要
ArrayList<student> students = new ArrayList<student>();
添加覆盖
学生班的的toString
方法。 暗示!如果您正在使用eclipse IDE,那么选择您的学生类并转到Source菜单并从那里选择generate toString方法。
答案 1 :(得分:0)
首先,请遵循Java命名约定并将您的方法重命名为addStudent
,同时请将student
课程更改为Student
。
在这一行中,
ArrayList<Object> students = new <Object> ArrayList();
您正在创建ArrayList
对象,该对象名为students
,Object
非常通用,请尝试更具体,并将其更改为:
ArrayList<Student> students = new <> ArrayList();
最后,您要打印对象,而不是内容。要打印内容,您需要在students
类中重复equals
并在Student
类中覆盖{{1}}后打印每个对象。
答案 2 :(得分:0)
此代码中有几个有问题的项目。
确保Student 的构造函数使用给定参数指定其所有字段。你没有提供代码,但看起来应该是这样的:
public class Student {
private String firstname;
private String lastname;
private String major;
private double gpa;
public Student(
String firstname,
String lastname,
String major,
double gpa) {
this.firstname = firstname;
this.lastname = lastname;
this.major = major;
this.gpa = gpa;
}
@Override
public String toString() {
return "Student [firstname=" + firstname + ", lastname=" + lastname + ", major="
+ major + ", gpa=" + gpa + "]";
}
}
还有一些未成年人:
Java 中的类名称应以大写字母开头。所以这是学生,而不是学生。
在创建单个Student实例时创建ArrayList是不合适的(但是),但在将代码扩展到严格的Student实例时有意义。
在Object中使用泛型完全没有使用它们!
使用Collection类时,通常会将变量声明为常用的超类型。
最后两点是:
List<Student> students = new <Student>ArrayList();
答案 3 :(得分:0)
如果这是完整的代码,则问题是您没有学生班级。为了使用学生课程,你必须告诉你的课程是什么。
这是一个简单的学生班,让你开始。
public class Student {
private String fname;
private String lname;
private String major;
private double gpa;
public Student(String fname, String lname, String major, double gpa) {
this.fname = fname;
this.lname = lname;
this.major = major;
this.gpa = gpa;
}
}
我还没有编译这段代码,但它看起来应该可以工作。
注意:您需要更改
new student (fname,lname,major,gpa);
到
new Student (fname,lname,major,gpa);
(注意案件变更)
答案 4 :(得分:0)
students
变量(ArrayList)应该是实例变量,而不是局部变量。
根据上面的代码,你总是会在列表中只有一个学生,因为每次调用方法addastudent
时你都会重新创建ArrayList。