我想通过使用ArrayList动态添加多个学生数据,但它显示错误的打印 e.g
STD.Student@1a2760f STD.Student@f4d6b3
public class Student {
String strName;
int iRollNum;
public static void main(String[] args) {
ArrayList<Student> myArrayList=new ArrayList<Student>();
Student student=new Student("Asha",4);
myArrayList.add(student);
Student student2=new Student("Asha",4);
Student student3=new Student("Asha",4);
Student student4=new Student("Asha",4);
Student student5=new Student("Asha",4);
myArrayList.add(student2);
myArrayList.add(student3);
myArrayList.add(student4);
myArrayList.add(student5);
for (int i = 0; i <myArrayList.size(); i++) {
System.out.println(myArrayList.get(i));
}
}
public Student(String strName, int iRollNum) {
this.strName = strName;
this.iRollNum = iRollNum;
}
PLZ帮助解决这个问题
答案 0 :(得分:1)
@Override
public String toString() {
return "("+strName+", "+iRollNum+")";
}
将此方法添加到学生。 println使用toString来确定如何显示字符串。默认情况下,它只显示类名和随机数。
答案 1 :(得分:1)
目前,您正在从toString()
获取java.lang.Object
方法 - 其中包括类和参考地址。听起来像你要覆盖(并且你可以覆盖)学生中的toString()
方法有这样的东西
@Override
public String toString() {
return String.valueOf(iRollNum) + " " + strName;
}
答案 2 :(得分:1)
而不是行:
for (int i = 0; i < myArrayList.size(); i++) {
System.out.println(myArrayList.get(i));
}
使用常规循环:
for (int i = 0; i < myArrayList.size(); i++) {
System.out.println(myArrayList.get(i).iRollNum+" - "+myArrayList.get(i).strName);
}
OR高级循环:
for (Student student: myArrayList) {
System.out.println(student.iRollNum+" - "+student.strName);
}
这将打印输出,如:
4 - 阿莎
4 - 阿莎
4 - 阿莎
4 - 阿莎
4 - 阿莎
您需要使用以下命令指向Student类型ArrayList中的特定对象:
myArrayList.get(i)
然后打印您需要使用的对象变量
.iRollNum or .strName
在for循环中你创建一个对象Student student,这样你就可以使用该对象直接引用对象的变量/函数
你也可以使用@Paperwaste覆盖toString方法的方法 - 做同样事情的优雅方式。
答案 3 :(得分:0)
myArrayList.get(1)
返回一个学生对象。当试图打印它时,它调用默认的toString()方法。你需要包含一个toString方法。尝试将此方法添加到您的学生班
@Override
public String toString(){
return this.strName + " " + this.iRollNum;
}
答案 4 :(得分:0)
替换以下代码:
for (int i = 0; i <myArrayList.size(); i++) {
System.out.println(myArrayList.get(i));
}
用这个:
for (Student student : myArrayList ){
System.Out.Println(student.toString());
}
或者如果你没有toString方法,你可以使用student.get&lt;&gt;获取所需值的方法
答案 5 :(得分:0)
我有Student类的另一个参数作为标记,它类似于数组:
int[] marks = new int[]{90, 80, 99, 95};
在这种情况下,我们需要使用toString()
方法来打印数组结果。