抱歉再次发帖,但我无法编辑我的上一篇帖子。所以,我的代码在输出前打印了一个新行
这是我的代码
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
我认为问题出在第一个打印语句,但我不知道如何正确修复它
在您的代码中,您有一个条件语句,您使用 System.out.print(" " + movieTime) 打印电影时间并在其前面留一个空格。此语句不包含换行符,因此不会创建新行。
但是,当条件语句为假时,您有两个打印语句:System.out.println() 和 System.out.printf("%-44s | %5s | %s", movieName, movieRating, movieTime)。第一个语句 System.out.println() 在第二个语句 System.out.printf() 之前打印一个换行符,这导致换行出现在输出之前。
要解决此问题,您可以删除 System.out.println() 语句并修改 System.out.printf() 语句以在格式字符串末尾包含换行符,如下所示:
System.out.printf("%-44s | %5s | %s\n", movieName, movieRating, movieTime);
通过添加 在格式字符串的末尾,您将确保在电影信息之后打印换行符,即使条件语句为假。