我将尝试尽可能具体,但如果不完美,请不要生气,这是我的第一篇文章。
我正在创建一个拼字游戏评分类,它包含两个文件:一个字母值txt文件和一个包含一些单词的txt文件,我们稍后会根据它包含的字母确定每个单词的值,就像在拼字游戏。
字母值文本文件将具有26行,每行具有字母表的随机字母,空格和与所述行中的所述字母对应的特定字母值整数。像这样:
A 1
E 1
F 3
Z 15
我知道如何读取每一行并存储它,但我不知道如何设置它,以便它匹配文件中的每个字母及其相应的数字值。我几乎想要做两个数组......任何帮助都表示赞赏。如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
您可以使用if(red)
查找点值。然后你不必担心将字符转换为索引等等。
Map
然后,您可以使用Map<Integer, Integer> points = new HashMap<>();
Pattern p = Pattern.compile("([A-Z])\\s+(\\d+)");
for (String line : Files.readAllLines(Paths.get("points.txt"))) {
Matcher m = p.matcher(line);
if (!m.matches())
throw new IllegalArgumentException(line);
points.put((int) m.group(1).charAt(0), Integer.valueOf(m.group(2)));
}
地图做有趣的事情,如下所示:
points
当然,您需要考虑每个字母的位置等所产生的奖金,但这可能有助于您开始使用。
答案 1 :(得分:1)
您可以使用hashmap
将您的信件存储为key
,将您的信件存储为value
:
Map<String, Integer> tiles = new HashMap<String, Integer>();
然后循环遍历文本文件中的行,并将字母设为Key
,将数字设为Value
:
for each line in file
tiles.add(letter, value)
但是你决定阅读文本文件取决于你
答案 2 :(得分:1)
将字母点组合存储在键值Map
中Map<Character, Integer> letterScoreMap = new HashMap<>();
File file = new File("file.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) { // read until nothing left
String[] entry = line.split(); // split by the space
letterScoreMap.put( // add a keyvalue pair
entry[0].charAt(0), // key: string to character
Integer.parseInt(entry[1]) // Value: string to int
);
}
}
catch (IOException e) {
e.printStackTrace();
}
现在,当您想要访问字母得分时,您可以这样做:
char testLetter = 'A';
int testScore = letterScoreMap.get(testLetter);
System.out.format("letter %1$s has a score %2$s.", testLetter, testScore);