我试图创建一个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,但无济于事(
任何有关如何使其可靠地工作的帮助都将是一个很大的帮助。
谢谢!