You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:12:46