使用System.out.println()创建边框

时间:2013-11-27 14:04:24

标签: java

在没有String变量sh3影响边界的情况下,是否存在创建此类排列?我真的很难过,我的Java知识几乎只限于你在这里看到的内容,如果有帮助吗?

System.out.println("###################################################"); 
System.out.println("#    **** WEST END THEATRE BOOKING SYSTEM ****    #"); 
System.out.println("#                                                 #"); 
System.out.println("#                 T I C K E T                     #"); 
System.out.println("#                                                 #"); 
System.out.println("#     Show:    "+sh3+"                            #"); 
System.out.println("#     Theatre: Her Majesty's                      #"); 
System.out.println("#     Price:   65                                 #"); 
System.out.println("###################################################");

6 个答案:

答案 0 :(得分:6)

既然您知道线的长度,并且所有线都具有相同的长度,您可以这样做:

假设n是该行的长度。由于sh3将从15位开始,因此您可以计算sh3后需要的空格数。

System.out.println("#     Show:    "+sh3+calcSpaces()+"#");

如果您知道calcSpaces的长度

,就可以轻松实现sh3
private String calcSpaces(String sh3) {
    String res = "";
    for(int i = 0; i < n - sh3.length(); i++){
       res += " ";  //You might want to use StringBuilder instead.. 
    }               //it's a good practice, although performance is not 
}                   //significant here

我还建议您阅读Formatter

答案 1 :(得分:5)

我知道我没有为此提供代码,但我指的是思考过程,然后将实现留给您。

有4个属性在玩,其中你知道total size of line,你也知道length of the string,你知道剩下多少空间可以很容易找到。

所有你需要的是一个循环,它将计算剩余的空间。

enter image description here

答案 2 :(得分:4)

就个人而言,我会使用FormatterPrintStream的{​​{3}}方法。

您可以像这样使用printf()

System.out.printf("#     Show:    %-35#\n", sh3);

当第一个字符串被打印时,其中的%-35会被sh3替换为空格。 %开始转义序列,-使sh3位于已分配空间的左侧,35sh3分配35个字符的空格}。 <{1}}未填充的35个字符中的任何一个都填充了空格。

要详细了解sh3的语法,请转到printf()

编辑:我忘了提及printf()。在\n中,String是一个转义序列,它会创建一个新行。 e.g:

\n

相同
System.out.println("abc\n123");
System.out.println("abc"); System.out.println("123"); 不同,

printf()不会在其打印的println()末尾创建新行。 String手动创建一个新行,这是使程序按预期运行所必需的。

答案 3 :(得分:3)

是的,这很棘手:

        String sh3 = "StackOverflow";
        String sh4 = "";
        for(int i=0;i<35-sh3.length();i++){
            sh4 += " ";
        }
        sh4 += "#";
        System.out.println("###################################################"); 
        System.out.println("#    **** WEST END THEATRE BOOKING SYSTEM ****    #"); 
        System.out.println("#                                                 #"); 
        System.out.println("#                 T I C K E T                     #"); 
        System.out.println("#                                                 #"); 
        System.out.println("#     Show:    " + sh3 + sh4 ); 
        System.out.println("#     Theatre: Her Majesty's                      #"); 
        System.out.println("#     Price:   65                                 #"); 
        System.out.println("###################################################");

答案 4 :(得分:3)

最快的方法是:

System.out.print("#     Show:    " + sh3);
for (int i = 0; i < 34-sh3.length(); i++) {
    System.out.print(" ");
}
System.out.println(" #");

答案 5 :(得分:2)

您可以使用sh3.length()获取sh3的长度 然后你可以添加空格以适合你的边界。

int spacesNum = 35 - sh3.length();
String spaces = "";
for(int i = spacesNum; i > 0; i++){
    spaces += " ";
}

System.out.println("###################################################"); 
System.out.println("#    **** WEST END THEATRE BOOKING SYSTEM ****    #"); 
System.out.println("#                                                 #"); 
System.out.println("#                 T I C K E T                     #"); 
System.out.println("#                                                 #"); 
System.out.println("#     Show:    "+sh3+spaces+"#"); 
System.out.println("#     Theatre: Her Majesty's                      #"); 
System.out.println("#     Price:   65                                 #"); 
System.out.println("###################################################");