当前位置: 代码迷 >> Java相关 >> 使用迭代器打印乱码有关问题(System.out.println(iterator.next());)
  详细解决方案

使用迭代器打印乱码有关问题(System.out.println(iterator.next());)

热度:71   发布时间:2016-04-22 19:41:37.0
使用迭代器打印乱码问题(System.out.println(iterator.next());)
各位兄台懂Java的帮忙看看,这个程序为什么打印的结果是乱码????
求帮忙解答.初学Java.
本人没有太多之分,希望好心解答一下.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class array {

public static void main(String[] args) {
ArrayList<Student> al=new ArrayList();

for(int i=0;i<10;i++)
{
al.add(new Student("天涯沦落人"+i,"nan"));
}
Iterator iterator=al.iterator();

while(iterator.hasNext())
{
System.out.println(iterator.next());
}

}
}

class Student{
public String name;
public String sex;
public Student(String name,String sex)
//public Student(String name)
{
this.name=name;
this.sex=sex;
}
}

打印结果是:
Student@52aaf3d2
Student@556d8a64
Student@a98d70d
Student@384e9bea
Student@30de3c87
Student@4e57dc21
Student@6a3522b5
Student@4679cf8c

------解决思路----------------------
改正之后代码如下:
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest {

public static void main(String[] args) {
ArrayList<Student> al = new ArrayList<Student>();

for (int i = 0; i < 10; i++) {
al.add(new Student("天涯沦落人" + i, "nan"));
}
Iterator iterator = al.iterator();

while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

class Student {
public String name;
public String sex;

public Student(String name, String sex) {
this.name = name;
this.sex = sex;
}

@Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + "]";
}
}

在没有重写toString()方法的时候,默认调用的是Object类中的toString()方法,而这个方法在Object类中就是这个写的,所以打印出来的效果就是那个效果,并非乱码。你重写之后就可以指定自己想要的格式。
------解决思路----------------------
如果打印的结果不这样那就怪了,.next方法返回的是一个对象,你叫他怎么跟你打印出这个对象里面具体的值啊?你想要打印出里面具体的值方法有很多种,但是无论是什么方法都肯定有从对象中取属性的值的操作,如,stu.getName()!
  相关解决方案