用字符打印金字塔图案(Printing pyramid pattern out of characters)
我需要打印金字塔形状的字符数组。 我到目前为止是这样的:
char[] chars = {'F', 'E', 'L', 'I', 'Z', ' ', 'A', 'N','I', 'V', 'E', 'R', 'S', 'A', 'R', 'I', 'O'}; int length = chars.length; for (int i = 1; i < length; i += 2) { for (int j = 0; j < 9 - i / 2; j++) System.out.print(" "); for (int j = 0; j < i; j++) System.out.print(chars[j]); System.out.print("\n"); } for (int i = length; i > 0; i -= 2) { for (int j = 0; j < 9 - i / 2; j++) System.out.print(" "); for (int j = 0; j < i; j++) System.out.print(chars[j]); System.out.print("\n");并打印这个:
F FEL FELIZ FELIZ A FELIZ ANI FELIZ ANIVE FELIZ ANIVERS FELIZ ANIVERSAR FELIZ ANIVERSARIO FELIZ ANIVERSAR FELIZ ANIVERS FELIZ ANIVE FELIZ ANI FELIZ A FELIZ FEL F但我需要它从数组中间的字符开始打印。 最终结果是这样的:
I NIV ANIVE ANIVER Z ANIVERS IZ ANIVERSA LIZ ANIVERSAR ELIZ ANIVERSARI FELIZ ANIVERSARIO ELIZ ANIVERSARI LIZ ANIVERSAR IZ ANIVERSA Z ANIVERS ANIVER ANIVE NIV I任何帮助将不胜感激。
I need to print an array of characters in a pyramid shape. What I have so far is this:
char[] chars = {'F', 'E', 'L', 'I', 'Z', ' ', 'A', 'N','I', 'V', 'E', 'R', 'S', 'A', 'R', 'I', 'O'}; int length = chars.length; for (int i = 1; i < length; i += 2) { for (int j = 0; j < 9 - i / 2; j++) System.out.print(" "); for (int j = 0; j < i; j++) System.out.print(chars[j]); System.out.print("\n"); } for (int i = length; i > 0; i -= 2) { for (int j = 0; j < 9 - i / 2; j++) System.out.print(" "); for (int j = 0; j < i; j++) System.out.print(chars[j]); System.out.print("\n");and it prints this:
F FEL FELIZ FELIZ A FELIZ ANI FELIZ ANIVE FELIZ ANIVERS FELIZ ANIVERSAR FELIZ ANIVERSARIO FELIZ ANIVERSAR FELIZ ANIVERS FELIZ ANIVE FELIZ ANI FELIZ A FELIZ FEL FBut I need it to start printing from the character in the middle of the array. The end result gotta be like this:
I NIV ANIVE ANIVER Z ANIVERS IZ ANIVERSA LIZ ANIVERSAR ELIZ ANIVERSARI FELIZ ANIVERSARIO ELIZ ANIVERSARI LIZ ANIVERSAR IZ ANIVERSA Z ANIVERS ANIVER ANIVE NIV IAny help would be greatly appreciated.
最满意答案
你可以做同样的事情在下面的代码显示。 它将使用较少数量的for循环。 我在代码中添加了内嵌评论。
char[] chars = { 'F', 'E', 'L', 'I', 'Z', ' ', 'A', 'N', 'I', 'V', 'E', 'R', 'S', 'A', 'R', 'I', 'O' }; int length = chars.length; for (int line=0;line<=length;line++) { //This will print upper part of pyramid if(line < length/2){ String output=""; int middelVal=length/2; for (int i = middelVal - line; i > 0; i--) { output=output+" "; } for (int i = middelVal - line; i <= middelVal + line; i++) { output=output+chars[i]; } System.out.println(output); }else if(line > length/2){ //This will print lower part of pyramid String output=""; int middelVal=length/2; int nwNum = chars.length-line; for (int i = middelVal - nwNum; i > 0; i--) { output=output+" "; } for (int i = middelVal - nwNum; i <= middelVal + nwNum; i++) { output=output+chars[i]; } System.out.println(output); } }You can do the same thing as show on below code. It will use lesser number of for loops. I have added inline comments in the code go through it.
char[] chars = { 'F', 'E', 'L', 'I', 'Z', ' ', 'A', 'N', 'I', 'V', 'E', 'R', 'S', 'A', 'R', 'I', 'O' }; int length = chars.length; for (int line=0;line<=length;line++) { //This will print upper part of pyramid if(line < length/2){ String output=""; int middelVal=length/2; for (int i = middelVal - line; i > 0; i--) { output=output+" "; } for (int i = middelVal - line; i <= middelVal + line; i++) { output=output+chars[i]; } System.out.println(output); }else if(line > length/2){ //This will print lower part of pyramid String output=""; int middelVal=length/2; int nwNum = chars.length-line; for (int i = middelVal - nwNum; i > 0; i--) { output=output+" "; } for (int i = middelVal - nwNum; i <= middelVal + nwNum; i++) { output=output+chars[i]; } System.out.println(output); } }更多推荐
发布评论