如何从文件中获取信息(字母和整数),并存储该信息以供进一步使用?

时间:2016-02-24 23:31:44

标签: java arrays file-io bufferedreader

我将尝试尽可能具体,但如果不完美,请不要生气,这是我的第一篇文章。

我正在创建一个拼字游戏评分类,它包含两个文件:一个字母值txt文件和一个包含一些单词的txt文件,我们稍后会根据它包含的字母确定每个单词的值,就像在拼字游戏。

字母值文本文件将具有26行,每行具有字母表的随机字母,空格和与所述行中的所述字母对应的特定字母值整数。像这样:

A 1

E 1

F 3

Z 15

我知道如何读取每一行并存储它,但我不知道如何设置它,以便它匹配文件中的每个字母及其相应的数字值。我几乎想要做两个数组......任何帮助都表示赞赏。如果您需要更多信息,请与我们联系。

3 个答案:

答案 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);