日期:2014-05-20  浏览次数:20685 次

java程序小问题
package b;
import java.util.*;
public class java3 {

public static void main(String[] agr)
{
class Cat extends Object
{
private String name;
private int age;
public Cat(String name,int age )
{
this.name =name;
this.age=age;
}
}

Set<Cat> m= new HashSet<Cat>();
m.add(new Cat("小黑",2));
m.add(new Cat("小花",1));
m.add(new Cat("小白",3));
// Iterator<Cat> it=m.iterator();
// while(it.hasNext())
// if(it.next().age>2)
// it.remove();
for(Cat i:m)
System.out.println(i);
}
}


这是一个简单的java程序,我想输出“小黑”,2
  “小花”,1
  “小白”,3

但执行结果却输出的是指针,这个程序该怎么改?
请大家帮忙

------解决方案--------------------
试试给name和age写get和set方法
------解决方案--------------------
= =。。。重写 toString()方法
------解决方案--------------------
用toString()
Java code

import java.util.*;
public class java3 {

public static void main(String[] agr){
    class Cat extends Object{
        private String name;
        private int age;
        public Cat(String name,int age ){
            this.name =name;
            this.age=age;
            }
        public String toString() {
            return "cat name is " + name +",age is " + age;
        }
        
    }

    Set<Cat> m= new HashSet<Cat>();
    m.add(new Cat("小黑",2));
    m.add(new Cat("小花",1));
    m.add(new Cat("小白",3));
    //     Iterator<Cat> it=m.iterator();
    //     while(it.hasNext())
    //     if(it.next().age>2)
    //     it.remove();
    for(Cat i:m)
        System.out.println(i);
    }
}

------解决方案--------------------
Java code
package main;

import java.util.*;

public class Main {
// 这种情况最好不要使用内部类
    public static void main(String[] agr) {

        Set<Cat> m = new HashSet<Cat>();
        m.add(new Cat("小黑", 2));
        m.add(new Cat("小花", 1));
        m.add(new Cat("小白", 3));

        for (Cat i : m)
            System.out.println(i.getName() + i.getAge());
    }
}

class Cat extends Object {
    private String name;
    private int age;

    public Cat(String name, int age) {
        this.setName(name);
        this.setAge(age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

------解决方案--------------------
重写toString方法