在输出前打印一个新行

问题描述 投票:0回答:1

抱歉再次发帖,但我无法编辑我的上一篇帖子。所以,我的代码在输出前打印了一个新行

这是我的代码


                

                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

我认为问题出在第一个打印语句,但我不知道如何正确修复它

java string input output newline
1个回答
-1
投票

在您的代码中,您有一个条件语句,您使用 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);

通过添加 在格式字符串的末尾,您将确保在电影信息之后打印换行符,即使条件语句为假。

© www.soinside.com 2019 - 2024. All rights reserved.