我没有使用LinkedHashMap在代码中获取正确的键值

时间:2019-11-14 12:41:08

标签: java loops dictionary linkedhashmap

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

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

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

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

代码示例:

打印“ a”的定义

input> 1

正确答案

打印“ b”的定义

input> a

错误的答案

打印“ c”的定义

input> 2

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

  

//由于输入为2,且此处为键b的值,因此此处应为“ b”   在地图上。

打印 **“ c”的定义

  

//在这里也应该是“ b”,那么它就会出错,与正确的匹配   键

input> 3

正确答案

打印“ d”的定义

input> 1

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

  

,并在这里打印“ d”而不是“ a”    而且我尝试了很多不知道如何解决此问题的方法。

input> 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");

            }

        }
    }

}

1 个答案:

答案 0 :(得分:2)

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

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