0

我正在写一个小电话簿,只是为了练习我对 java 的了解。问题出在下面的代码中,我希望代码在调用 getname 方法时显示名称和号码。我是一个初学者,我真的很想让这个项目成功。

public class Phone {

    private HashMap<String, Integer> name;
    HashMap<String, Integer> namelist = new HashMap<String, Integer>();
    Integer number;
    String names;

    /**
     * @return the name
     */
    Phone() {

        // get user to enter name and number
        Scanner scan = new Scanner(System.in);
        System.out.println("enter name ");
        names = scan.nextLine();

        System.out.println("enter number ");
        String nums = scan.nextLine();
        number = Integer.parseInt(nums);

        namelist.put(names, number); // set key and value to namelist object;

        setName(namelist); //

    }

    void printValue() {

        System.out.print(namelist.get(names));

    }

    public HashMap<String, Integer> getName() {
        return name;
    }

    /**
     * @param names
     *            the name to set
     */
    public void setName(HashMap<String, Integer> names) {
        this.name = names;
    }

    public static void main(String[] args) {

        Phone ph = new Phone();
        Gui window = new Gui();
        System.out.println(ph.getName());
        ph.printValue();


    }

}
4

3 回答 3

1

您的getName()方法应该返回一个字符串,而不是一个 HashMap;您需要在返回之前连接名称和号码,例如return name + "; " + Integer.toString(number);

于 2013-04-19T16:07:47.343 回答
0

我假设通过说“显示姓名和号码”,您想要显示手机中存储的所有联系人。所以问题似乎是如何打印哈希图中的所有元素。

        for(String name : map.keySet()){
        System.out.println("name is " + name);
        System.out.println("contact is " + map.get(name));}
于 2013-04-19T16:21:38.410 回答
0

这是一个更简单的答案:

System.out.println(map);

这会调用 Map 上的 toString() 方法,该方法调用键和值的 toString() 方法,并且该实现报告键/值对,如下所示:

“乔”->“123456789”

唯一需要注意的是默认情况下不会在元素之间放置换行符。如果你想这样做,你可以这样做:

for(Map.Entry<String,Integer> entry: map.Entry())
    system.out.println(entry);
于 2013-04-19T16:36:53.050 回答