Java代码输出开头出现多余空行的修复方案问询
Java输出开头多余空行问题解决
你的代码运行后输出开头出现多余空行,核心原因是第一次进入else分支时,先执行了System.out.println()——因为初始的frqName和frqRating与第一个电影的信息不匹配,第一次循环直接走else,先打印了空行,才输出第一条电影内容。
原代码片段
if (movieName.length() > 44) { movieName = movieName.substring(0, 44); } if(frqName.equals(movieName) && frqRating.equals(movieRating)) { System.out.print(" " + movieTime); } else { System.out.println(); System.out.printf("%-44s | %5s | %s", movieName, movieRating, movieTime); } frqName = movieName; frqRating = movieRating;
当前异常输出
Wonders of the World | G | 16:40 20:00 Journey to Space | PG-13 | 19:00 Buffalo Bill And The Indians or Sitting Bull | PG | 12:45 15:00 19:30 Adventure of Lewis and Clark | PG-13 | 10:00 14:30 Halloween | R | 19:00
修复方案
添加一个布尔标志位判断是否是第一次输出,避免第一次执行else时打印空行:
// 在循环外部初始化标志位 boolean isFirstMovie = true; // 循环内部的代码修改如下 if (movieName.length() > 44) { movieName = movieName.substring(0, 44); } if(frqName.equals(movieName) && frqRating.equals(movieRating)) { System.out.print(" " + movieTime); } else { // 不是第一次输出时才打印换行 if (!isFirstMovie) { System.out.println(); } System.out.printf("%-44s | %5s | %s", movieName, movieRating, movieTime); isFirstMovie = false; } frqName = movieName; frqRating = movieRating;
修复后效果
输出开头不再有空行,同电影的场次仍会追加在同一行末尾:
Wonders of the World | G | 16:40 20:00 Journey to Space | PG-13 | 19:00 Buffalo Bill And The Indians or Sitting Bull | PG | 12:45 15:00 19:30 Adventure of Lewis and Clark | PG-13 | 10:00 14:30 Halloween | R | 19:00
内容的提问来源于stack exchange,提问作者abboud
相关产品推荐
相关产品推荐

