在没有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("###################################################");
答案 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
,你知道剩下多少空间可以很容易找到。
所有你需要的是一个循环,它将计算剩余的空间。
答案 2 :(得分:4)
就个人而言,我会使用Formatter
或PrintStream
的{{3}}方法。
您可以像这样使用printf()
:
System.out.printf("# Show: %-35#\n", sh3);
当第一个字符串被打印时,其中的%-35
会被sh3
替换为空格。 %
开始转义序列,-
使sh3
位于已分配空间的左侧,35
为sh3
分配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("###################################################");