我想做的是制作一个盒子,如下所示:
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
它的代码是
public static void drawUpper(int count)
{
System.out.print("|");
for(int i = 0; i <= (count); i++){
System.out.print(".");
}
for(int i = 0; i <= (-count + 1); i++){
System.out.print("/\\");
}
for(int i = 0; i <= count; i++){
System.out.print(".");
}
for(int i = 0; i <= count; i++){
System.out.print(".");
}
for(int i = 0; i <= (-count + 1); i++){
System.out.print("/\\");
}
for(int i = 0; i <= count; i++){
System.out.print(".");
}
System.out.print("|");
System.out.println();
}
public static void drawLower(int count)
{
System.out.print("|");
for(int i = 0; i <= -count; i++){
System.out.print(".");
}
for(int i = 0; i <= (count + 1); i++){
System.out.print("\\/");
}
for(int i = 0; i <= -count; i++){
System.out.print(".");
}
for(int i = 0; i <= -count; i++){
System.out.print(".");
}
for(int i = 0; i <= (count + 1); i++){
System.out.print("\\/");
}
for(int i = 0; i <= -count; i++){
System.out.print(".");
}
System.out.print("|");
System.out.println();
}
但是,这需要一个比例,其当前比例为 5;
private static int size = 5;
public static void main(String[] args)
{
for(int i = 1; i > (-size / 2); i--){
drawUpper(i);
}
for(int i = 1; i > (-size / 2); i--){
drawLower(i);
}
}
现在,只要比例不改变,它就可以完美工作,我对自己很满意。然而,当我将比例更改为 7 时,该框似乎变成了这样:
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|/\/\/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|............|
但是,它应该看起来像这样:
|....../\............/\......|
|...../\/\........../\/\.....|
|..../\/\/\......../\/\/\....|
|.../\/\/\/\....../\/\/\/\...|
|../\/\/\/\/\..../\/\/\/\/\..|
|./\/\/\/\/\/\../\/\/\/\/\/\.|
|/\/\/\/\/\/\/\/\/\/\/\/\/\/\|
|\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
|.\/\/\/\/\/\/..\/\/\/\/\/\/.|
|..\/\/\/\/\/....\/\/\/\/\/..|
|...\/\/\/\/......\/\/\/\/...|
|....\/\/\/........\/\/\/....|
|.....\/\/..........\/\/.....|
|......\/............\/......|
最佳答案
这就是我的想法。我只提供了生产一颗钻石的代码(我不会为您完成所有工作;)
)。调整它来生成两颗钻石很简单,因此由您来进行这些更改(考虑到下面的代码,这实际上一点也不困难)。
// aliases for java's verbose methods
public static void p(char c) { System.out.print(c); }
public static void pn(char c) { System.out.println(c); }
// convenient shortcut for alternating between characters
public static char[] a = {'/', '\\'};
public static void dotop(int size, int line) {
p('|');
for (int i=0; i<size-line; i++) p('.');
for (int i=0; i<line+1; i++) p(a[i%2]);
for (int i=0; i<line+1; i++) p(a[(i+1+line)%2]);
for (int i=0; i<size-line; i++) p('.');
pn('|');
}
public static void dobottom(int size, int line) {
p('|');
for (int i=0; i<size-line; i++) p('.');
for (int i=0; i<line+1; i++) p(a[(i+line+(line+1)%2)%2]);
for (int i=0; i<line+1; i++) p(a[(i+1+(line+1)%2)%2]);
for (int i=0; i<size-line; i++) p('.');
pn('|');
}
public static void main(String[] args) {
int size = 4;
for (int i=0; i<=size; i++) dotop(size, i);
for (int i=0; i<=size; i++) dobottom(size, size-i);
}
产生的输出是:
|..../\....|
|.../\/\...|
|../\/\/\..|
|./\/\/\/\.|
|/\/\/\/\/\|
|\/\/\/\/\/|
|.\/\/\/\/.|
|..\/\/\/..|
|...\/\/...|
|....\/....|
关于java - 使用 for 循环缩放输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22029707/