如何返回密钥:密钥可能相同的值对?

时间:2016-09-16 19:58:50

标签: java android

我试图创建一个Android Hangman应用程序作为一点自我学习,到目前为止一切顺利,但(通常)最后一个功能导致我出现问题。

到目前为止,我有一个随机的单词,一个定时游戏,一个单词的长度,现在我试图按类别添加一个单词。

最初,在类别阶段之前,我一直在阅读文本文件的内容,并使用它们来填充可以从中选择单词的ArrayList。现在,因为我需要一个Key:Value对(category:word)我将它换成Hashmap并检查文本文件中以句号"开头的下一个单词。"将它捐赠为类别。然后我在下一个时期之前使用它作为Key和下一组词#34;。#34;成为单词。

因为,希望你们中的一些人可能已经发现,这引起了一个问题,即Keys必须是唯一的,所以对于乡巴佬形式都是如此,我只是简单地将Key:Value格式换成Value:Key ...非常好......作为随机词。

注意:我必须更改LinkedHashMap的Hashmap,以便我可以按索引搜索位置' x'的随机字。

我现在遇到的问题是,按类别搜索时,它有点昙花一现。有时它工作正常,有时会显示错误的类别来猜测 - 我不知道为什么,我已经通过调试器负载时间和它。只是。发生了什么?!?!?

理想情况下,我希望能够返回给定类别的所有单词,以便我可以从随机中选择一个,但正如我所说,它有点受到影响并且会错过它们是否会继续匹配与否。

这是我为阅读和排序文本文件而编写的代码:

private String word;
private List<String> words = new ArrayList<>();
private LinkedHashMap<String, String> map = new LinkedHashMap<>();

public List<String> readTextFileAsList(Context ctx, int resId) {
    InputStream inputStream = ctx.getResources().openRawResource(resId);
    InputStreamReader inputreader = new InputStreamReader(inputStream);
    BufferedReader bufferedreader = new BufferedReader(inputreader);
    String line;

    String category = null;
    try {
        //While there are still lines left
        while (( line = bufferedreader.readLine()) != null) {
            //Add to hash map
            if (line.contains(".")) {
                //Remove the proceeding period, donating a category
                line = line.substring(1, line.length());
                //Set the category name to the current line
                category = null;
                category = line;
            } else {
                //Add to the hashmap
                map.put(line, category);
                //Add to the array
                words.add(line);
            }
        }
    }
    catch (IOException e) {
        return null;
    }
    return words;
}

我现在通过再次搜索返回的类别是否与所选类别不匹配来验证它,如下所示:

if (!wordBank.getCategory(randomNumber).equals(wordCategorySelected)) {
                generateRandomWord(sizeOfWordBank);
            }

我尝试了this,但无济于事(

任何有关如何使其可靠地工作的帮助都将是一个很大的帮助。

谢谢!

0 个答案:

没有答案