为什么我的Java Map无法在IntelliJ中编译?

时间:2019-12-19 13:11:24

标签: java dictionary intellij-idea compiler-errors

我正在尝试使用IntelliJ中的Java创建Scrabble游戏。我决定使用Map<Character, Integer>,它将包含每个字母磁贴及其对应的得分值。我以为可以使用ofEntries的简写形式来初始化Map的值,但是每次尝试编译程序时,都会出错。

error: cannot find symbol Map.entry('A',1)  
symbol: method entry(char,int)  
location: interface Map  
26 errors (1 for each Map entry)

起初,我认为这可能与Map类型为Character,Integer以及提及entry(char,int)的错误有关,但是据我了解,Java在基元及其对象包装器之间使用自动装箱。

import java.util.Map;

class Scrabble {
    private final Map<Character, Integer> LETTER_SCORES = Map.ofEntries(
            Map.entry('A',1), Map.entry('E',1), Map.entry('I',1), Map.entry('O',1),
            Map.entry('U',1), Map.entry('L',1), Map.entry('N',1), Map.entry('R',1),
            Map.entry('S',1), Map.entry('T',1), Map.entry('D',2), Map.entry('G',2),
            Map.entry('B',3), Map.entry('C',3), Map.entry('M',3), Map.entry('P',3),
            Map.entry('F',4), Map.entry('H',4), Map.entry('V',4), Map.entry('W',4),
            Map.entry('Y',4), Map.entry('K',5), Map.entry('J',8), Map.entry('X',8),
            Map.entry('Q',10), Map.entry('Z',10)
    );

    private String word;
    private int wordScore;

    Scrabble(String word) {
        this.word = word;
    }

1 个答案:

答案 0 :(得分:0)

请转到项目结构|项目| Project SDK ,并在此处定义JDK> 9和Language level>9。此外,请转到 Project Structure | Java。模块,并检查是否在此定义了相应的模块语言级别。正如注释中正确提到的那样,您的代码示例应使用JDK> 9编译时不会失败。