如何在Java中实现控制台逐词输出?
控制台逐词输出实现方案
基于你现有的逐行输出代码,只需在遍历每行的逻辑里,把每行拆分为单词后逐个输出即可,同时调整输出方式和等待间隔,让效果更自然:
private void intro() { try { List<String> allLines = Files.readAllLines(Paths.get("src/resources/GameStoryIntro.txt")); // 定义单词输出的间隔时间(毫秒),可按需调整 int wordDelay = 500; // 定义换行后的等待时间(毫秒) int lineDelay = 2000; for (String line : allLines) { // 按空格拆分单词,处理多个连续空格的情况 String[] words = line.split("\\s+"); for (String word : words) { Thread.sleep(wordDelay); // 使用print而非println,让单词在同一行输出,末尾加空格分隔 System.out.print("\033[31m" + word + " \033[0m"); // 强制刷新输出缓冲区,避免内容堆积不显示 System.out.flush(); } // 整行单词输出完后换行,再等待指定时间 System.out.println(); Thread.sleep(lineDelay); } } catch (IOException | InterruptedException e) { e.printStackTrace(); } subMenu(); }
关键修改点说明:
- 使用
split("\\s+")拆分每行:\\s+匹配一个或多个空白字符,能处理文本中多个连续空格的情况,避免输出空字符串。 - 替换
println为print:保证单词在同一行连续输出,每个单词后加空格保持格式。 - 增加
System.out.flush():强制刷新输出缓冲区,确保单词能及时显示,不会因为缓冲区缓存导致内容一次性输出。 - 区分单词间隔和换行间隔:可以分别调整
wordDelay和lineDelay参数,让输出节奏更符合需求。
内容的提问来源于stack exchange,提问作者Peter Vasquez
相关产品推荐
相关产品推荐

