我在文本文件中有一个水果名称列表。 每次按下按钮时,水果名称都会以相反的顺序显示。 用户应破解水果名称并将其写入文本字段。 当用户按下按钮时,应在水果名称的文本文件列表中验证该单词。 如果用户提供的水果名称是正确的,则用户应获得分数并继续使用另一个水果名称。如果分数不正确,则分数保持不变。
每次水果名称正确时,我都在努力给出一个分数。 这是我的java代码函数,请帮助:
public int scoreWord() {
int scores = 0;
String filePath = "C:\\names.txt";
ArrayList<String> list = new ArrayList<>();
Scanner scan = new Scanner(filePath);
while (scan.hasNext()) {
list.add(scan.next());
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String ss = correct_word.getText();
String s = it.next();
for (String list1 : list) {
if (s.toLowerCase(Locale.ENGLISH).contains((ss))) {
scores = scores + 1;
} else {
int newScore = scores;
}
}
}
}
return scores;
}
答案 0 :(得分:0)
您最好将代码中的不同职责分开。我的意思是:绝对无需再次阅读相同的文本文件一遍又一遍。当用户玩这个游戏时,其内容将不更改。
从这个意义上说:你应该首先读取该文件的内容(例如,某种方式如this)。然后,您将该信息放入某些List<String>
或Set<String>
。稍后,当用户正在玩游戏时,您只需根据您通过阅读文件以前获取的信息来检查用户输入!
换句话说,你:
编辑;更多代码可以帮助您:
Set<String> fruitNames = fetchNamesFromFile("C:\\names.txt");
...
String userGuess = ... the value provided by the user
String normalizedGuess = userGuess.toLowerCase(Locale.ENGLISH);
if (fruitNames.contains(normalizedGuess)) {
... then user guessed correctly ...
获取方法:
Set<String> fetchAllNamesFromFile(String fname) throws IOException {
Charset charset = Charset.forName("ISO-8859-1");
return new HashSet<>(Files.readAllLines(fname, charset);
}
或类似的东西(请注意:这只是写下来的,不是通过编译器运行的 - 它是为了给你一些合意的想法;不是为你做所有的编码工作!)
当然,这里的假设是您的输入文件看起来像
fruit1
fruit2
...
等等。如果您的输入数据看起来不同,那么需要做更多的工作。