请教一下输出问题

踏实,简单 2017-12-01 11:42:21
public static void main(String[] args) {
Student1 student1 = new Student1();
Student1[] stu = new Student1[5];
//ArrayList<Student1> student1s = new ArrayList<Student1>();
Scanner scanner = new Scanner(System.in);
for(int i = 0 ; i < stu.length ; i++){
System.out.println("请按(名字,年龄,成绩中间用空格隔开)顺序输入第"+(i+1)+"个人的信息");
String name = scanner.next();
int age = scanner.nextInt();
int score = scanner.nextInt();
student1.setName(name);
student1.setAge(age);
student1.setScore(score);
stu[i] = student1;
}

student1.listStudents(stu);
}

我定义了一个Student1类 里面存了学生的属性和
public void listStudents(Student1[] arr){
for(int i = 0 ; i < arr.length ; i++){
System.out.println(arr[i].toString());
}
}

我调用这个要循环我出stu这个数组里的值 为什么我输出的都是地址
...全文
413 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39436847 2017-12-08
  • 打赏
  • 举报
回复
引用 1 楼 蜡基ZQ的回复:
你重写student的string方法 试试吧 可以通过右击鼠标点出来的
嗯嗯,我试了一下,感觉是个好办法
surprise_363 2017-12-08
  • 打赏
  • 举报
回复
需要在实体类里面重写toString方法的
丶爱拼才会赢 2017-12-08
  • 打赏
  • 举报
回复
你需要在你的类里,重写一些toString()方法。如图 当然上面只是个案例,你想要输出啥样的,可以参照着改。
ribut9225 2017-12-07
  • 打赏
  • 举报
回复
arr[i].toString()是将类转为字符串输出, toString这个方法并不知道你要输出name、age的属性的内容,所以要自己定义一个输出的方法
qq_34350475 2017-12-07
  • 打赏
  • 举报
回复
toString()返回的是“getClass().getName() + '@' + Integer.toHexString(hashCode())”,如果要打印对象的内容,得自己重写toString()方法,或者打印的时候直接

System.out.println("{"+arr[i].getName()+","+arr[i].getAge+"}");

蜗牛2号 2017-12-05
  • 打赏
  • 举报
回复
因为你的数组内部存入的是引用对象而非基本数据类型。如果想要打印想的属性,需要重写toString方法
踏实,简单 2017-12-04
  • 打赏
  • 举报
回复
引用 9 楼 java小白脸的回复:
我猜你这个程序最后输出的学生名字,年龄,成绩都是一样的
输出的地址不一样。。
踏实,简单 2017-12-03
  • 打赏
  • 举报
回复
引用 7 楼 qq_31036127的回复:
[quote=引用 5 楼 萌新的蜕变的回复:][quote=引用 3 楼 qq_31036127 的回复:] //重写student类的tostring方法 public String toString() { return "名字" + name ;//这里随便写 }
这个不可以直接在我输出后面.toString吗[/quote] 我记得object类里的tostring方法是返回类名+哈希码,也就是说如果一个类不重写tostring的话,直接printf这个类的引用,就会直接打印出这个类的类名+哈希码,所以你在student类里重写一下tostring就好了,我大一新生,如果说的有不对的地方还请见谅[/quote] 恩 我在试试
java小白脸 2017-12-03
  • 打赏
  • 举报
回复
我猜你这个程序最后输出的学生名字,年龄,成绩都是一样的
马角的逆袭 2017-12-03
  • 打赏
  • 举报
回复
引用 5 楼 萌新的蜕变的回复:
[quote=引用 3 楼 qq_31036127 的回复:] //重写student类的tostring方法 public String toString() { return "名字" + name ;//这里随便写 }
这个不可以直接在我输出后面.toString吗[/quote] 我记得object类里的tostring方法是返回类名+哈希码,也就是说如果一个类不重写tostring的话,直接printf这个类的引用,就会直接打印出这个类的类名+哈希码,所以你在student类里重写一下tostring就好了,我大一新生,如果说的有不对的地方还请见谅
qq_24604507 2017-12-03
  • 打赏
  • 举报
回复
看下源码就知道了
蜡基ZQ 2017-12-02
  • 打赏
  • 举报
回复
你重写student的string方法 试试吧 可以通过右击鼠标点出来的
踏实,简单 2017-12-02
  • 打赏
  • 举报
回复
引用 3 楼 qq_31036127 的回复:
//重写student类的tostring方法 public String toString() { return "名字" + name ;//这里随便写 }
这个不可以直接在我输出后面.toString吗
踏实,简单 2017-12-02
  • 打赏
  • 举报
回复
引用 1 楼 qq_34239028 的回复:
你重写student的string方法 试试吧 可以通过右击鼠标点出来的
我在后直接加.toString不行吗
马角的逆袭 2017-12-02
  • 打赏
  • 举报
回复
//重写student类的tostring方法 public String toString() { return "名字" + name ;//这里随便写 }
杀猪剑客 2017-12-02
  • 打赏
  • 举报
回复
Student1 这个类重写toString()方法试试!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧