如何在HashMap和打印值上打印迭代

时间:2016-04-09 11:39:11

标签: java loops hashmap

我目前正在尝试将一个选定的Word从我的HashMap打印到屏幕。第一次输出正确,但每次给出第一个值后,任何人都可以看到我做错了吗?

public void searchIndex() throws FileNotFoundException, IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please Enter a word to search");
        String entry = sc.nextLine().toLowerCase();

        String key = null;
        String value = null;
        Set<Integer> indices = null;
        for (String search : index.keySet()) {
            for (WordEntry values : index.values()) {

                key = search;
                value = values.getDefinition();
                indices = values.getIndices();
            }

        }
        System.out.println("Word " + key + " And " + value + indices);
        System.out.println("Do you wish to continue searching,'Yes' if so");
        String answer = sc.nextLine();
        if (answer.equalsIgnoreCase("Yes")) {
            searchIndex();

输出: 请输入要搜索的单词

字黄和颜色

您是否希望继续搜索,“是”,如果是这样

请输入要搜索的字词

开放

字黄和颜色

您是否希望继续搜索,“是”,如果是这样

1 个答案:

答案 0 :(得分:0)

在这个块中:

for (String search : index.keySet()) {
    for (WordEntry values : index.values()) {
       key = search;
       value = values.getDefinition();
       indices = values.getIndices();
    }
}

您无条件地设置keyvalueindices 的值

这意味着无论您输入什么,它都将始终设置:

  • keyindex的最后一个键。
  • valueindex
  • 中最后一个值的定义
  • indicesindex中最后一个值的最后一个索引。

而且,我猜黄色是index中的最后一项。因此,你得到了所说的输出。

我认为您需要根据输入的某些条件设置keyvalueindices的值。