首页 > 解决方案 > 我没有使用 LinkedHashMap 获得代码中值的正确键

问题描述

嗨,所以我被困在这里,如果有人可以帮助我,请我尽力在这里解释。代码工作正常,但它是错误的。

因此,我在问题所在的示例中向下突出显示(粗体),并用黄色注释了应该适合我的代码的内容。

我的 LinkedHashMap 的值:( 字符串,字符串)

cards.put("a", "1");
cards.put("b", "2");
cards.put("c", "3");
cards.put("d", "4");`

实际代码示例:

打印“a”的定义

输入> 1

正确答案

打印“b”的定义

输入>一个

错误的答案

打印“c”的定义

输入> 2

错误的答案。正确的是“3”,你刚刚写了“c”的定义

//这里应该是“b”,因为输入是2,2是地图中键b的值。

打印**“c”的定义

//这里也应该是“b”然后一切都错了它不匹配正确的键

输入> 3

正确答案

打印“d”的定义

输入> 1

错误的答案。正确的是“4”,你刚刚写了“d”的定义打印“d”的定义

在这里它打印“d”而不是“a”,我尝试了很多不知道如何解决这个问题的东西。

输入> 1

正确答案

这是代码源:

    public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    LinkedHashMap<String, String> cards = new LinkedHashMap<String, String>();

    cards.put("a", "1");
    cards.put("b", "2");
    cards.put("c", "3");
    cards.put("d", "4");

    for (Map.Entry<String, String> entry : cards.entrySet()) {

        String v = entry.getValue();
        String k = entry.getKey();

        System.out.println("Print the definition of " + "\"" + k + "\"");

        String answer = in.nextLine();

        if (answer.equals(v)) {
            System.out.println("Correct answer");

        } else if (!answer.equals(v) && !cards.containsValue(answer)) {
            System.out.println("Wrong answer");

        }

        else if (!answer.equals(v) && cards.containsValue(answer)) {
            System.out.println("Wrong answer. The correct one is " + "\"" + v + "\""
                    + ", you've just written the definition of " + "\"" + k + "\"");
            System.out.println("Print the definition of " + "\"" + k + "\"");

            String answer2 = in.nextLine();

            if (!answer2.equals(v) && !cards.containsValue(answer2)) {
                System.out.println("Wrong answer. The correct one is " + "\"" + v + "\"");

            } else {
                System.out.println("Correct answer");

            }

        }
    }

}

标签: javaloopsdictionarylinkedhashmap

解决方案


System.out.println("Wrong answer. The correct one is " + "\"" + v + "\""
                    + ", you've just written the definition of " + "\"" + k + "\"");

而不是k,您将获得输入值的实际密钥并打印出来。


推荐阅读