1 回答
TA贡献1780条经验 获得超4个赞
您应该检查是否max为 0,如果是,则返回null或空字符串,然后处理这种特殊情况。
我使用Random.nextInt()而不是int randIndex = (int) (Math.random() * max);
返回一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,从该随机数生成器的序列中提取。nextInt 的一般约定是伪随机生成并返回指定范围内的一个 int 值。所有绑定可能的 int 值都以(大约)相等的概率产生
请记住,最后一个元素的索引是 size()-1
public String getRandomWord() {
Hangman workingHangman = chooseDifficulty();
int max = workingHangman.getWords().size();
if (max == 0) {
return "";
}
int randIndex = new Random().nextInt(max); // returns an integer between 0 and max-1
return workingHangman.getWords().get(randIndex);
}
您还应该使用try-with-resources来确保您正在使用的资源在您完成后关闭。
public Hangman(String fileName, int difficulty) {
diff = difficulty;
//easy = 0; medium = 1; hard = 2
try (Scanner scanFile = new Scanner(new File(fileName))) {
while(scanFile.hasNext()) {
String line = scanFile.nextLine();
Scanner scanLine = new Scanner(line);
String tempWord = scanLine.next();
words.add(tempWord);
}
}
catch (FileNotFoundException e) {
System.out.println("File not found\n" + e);
}
}
最后,我建议使用调试器来了解您在每个 Hangman 中放入的内容。
添加回答
举报