Java读取txt文件随机行实现猜词游戏 代码打印全部内容如何修复
问题原因
你当前代码出现全量打印单词列表的问题,核心是两个逻辑错误:
- 前
wordNumber-1次循环只做了i的递增,没有调用nextLine()跳过前面的行,Scanner的文件读取游标始终停留在文件开头位置 - 命中目标行(
i == wordNumber)后没有终止循环,会持续读取并打印后续所有行,直到文件读取结束
修复方案
修改findWord方法逻辑,完全符合你老师要求的「先取随机整数、用nextLine取随机单词、不使用数组」的规则,修改后代码如下:
public static void findWord(String secret) throws IOException { File wordList = new File("wordlist.txt"); Scanner wordListNew = new Scanner(wordList); int wordNumber = randomNum.nextInt(33735) +1; for(int i = 1; i <= wordNumber; i++){ String currentLine = wordListNew.nextLine(); if(i == wordNumber){ System.out.println(currentLine); // 后续需要把单词传回主方法的话,这里直接赋值给对应变量即可 break; } } wordListNew.close(); }
补充说明
如果后续单词库的单词数量有调整,可以先逐行扫描一次文件拿到总行数,再基于总行数生成随机数,不用硬编码33735,避免出现随机数越界的问题。
内容的提问来源于stack exchange,提问作者beansers
相关产品推荐
相关产品推荐

