Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用System.out.println()创建边框_Java - Fatal编程技术网

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

Java 使用System.out.println()创建边框,java,Java,在不影响边框的情况下,是否仍可以创建此类排列?我在这里真的被难住了,我的Java知识几乎局限于你在这里看到的东西,如果这有帮助的话 System.out.println("###################################################"); System.out.println("# **** WEST END THEATRE BOOKING SYSTEM **** #"); System.out.println("#

在不影响边框的情况下,是否仍可以创建此类排列?我在这里真的被难住了,我的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("###################################################");

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

假设
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
私有字符串calcSpaces(字符串sh3){
字符串res=“”;
对于(int i=0;i

我还建议您阅读。

您可以使用
sh3.length()
然后,您可以添加空间以适合您的边框

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("###################################################");
是的,这是一个棘手的方法:

        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("###################################################");
String sh3=“StackOverflow”;
字符串sh4=“”;

对于(int i=0;i而言,最快的方法是:

System.out.print("#     Show:    " + sh3);
for (int i = 0; i < 34-sh3.length(); i++) {
    System.out.print(" ");
}
System.out.println(" #");
System.out.print(“#Show:+sh3”);
对于(int i=0;i<34-sh3.length();i++){
系统输出打印(“”);
}
System.out.println(“#”);

就个人而言,我会使用或
PrintStream
的方法

您可以像这样使用
printf()

System.out.printf("#     Show:    %-35#\n", sh3);
打印第一个字符串时,其中的
%-35
被替换为
sh3
加上一些空格。
%
开始转义序列,
-
使
sh3
位于分配的空格的左侧,
35
sh3
分配35个字符的空格。这35个字符中的任何一个
sh3
未填充的字符将被空格填充

要阅读有关
printf()
语法的更多信息,请转到

编辑:我忘了提到
\n
。在
字符串中,
\n
是一个转义序列,用于创建新行。例如:

System.out.println("abc\n123");

System.out.println("abc");
System.out.println("123");

printf()
,与
println()不同
,不会在打印的
字符串的末尾创建新行。
\n
手动创建新行,这是使程序按预期运行所必需的。

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

共有4个属性,其中您知道行的
总大小
,也知道字符串的
长度
,并且您知道可以很容易地找到剩余的空间

你所需要的就是一个循环,它会计算出应该留下多少空间


这是一张很好的票证!顺便说一句,安排得很好:-D根据总长度在循环中打印空格-字符串变量的长度您需要固定sh3的字符数,并坚持使用边界。另外,请注意显示名称不应超过票证宽度的总长度。我没有测试
calcSpaces
方法,但是概念很清楚。如果
sh3.length()
超过了
n
@NarendraPathai好注意。事实上,OP还有一些额外的事情要做。+1用于识别基本概念,而不仅仅是转储代码。@AaronBlenkush谢谢。是的,显示路径比只给出整个代码而不让OP思考任何事情要好。IMHO