gpt4 book ai didi

Java 简单的圣诞树

转载 作者:行者123 更新时间:2023-11-29 04:14:23 24 4
gpt4 key购买 nike

我是 java 的新手,我必须创建一个简单的 java 程序,以这种形式创建一棵圣诞树:

10|       *       |15=7+1+7
9| *** |15=6+3+6
8| ***** |15=5+5+5
7| ******* |15=4+7+4
6| ********* |15=3+9+3
5| *********** |15=2+11+2
4| ************* |15=1+13+1
3|***************|15=0+15+0
2| *** |15=6+3+6
1| *** |15=6+3+6

高度(所有自然正数)和 Material (本例中的“*”由用户输入给出)。这是我已有的,但我不知道如何获取每行末尾的“|15=7+1+7”和树底部的树干。

这是我的实际代码,以及它创建的内容:

public class Christmas{
public static void main(String[] args) {

int height = Integer.parseInt(args[0]);
String letters = (args[1]);
char firstLetter = letters.charAt(0);

//System.out.println(height+" "+firstLetter);

for (int i = 0; i < height; i++) {
// System.out.print((args.length)+"");
int row_number = height-i;
System.out.printf("%2d",row_number);
System.out.print("|");

for (int j = 1; j < height - i; j++){
System.out.print(" ");
}
for (int k = 0; k < (2 * i + 1); k++){
System.out.print(firstLetter+"");
}

System.out.println();

}
}
}

输出:

C:\Users\name\Desktop\JavaFolder>javac Christmas.java && java Christmas 10 *OMEGALUL
10| *
9| ***
8| *****
7| *******
6| *********
5| ***********
4| *************
3| ***************
2| *****************
1|*******************

我如何添加树树干,树干总是 3 个字母长,每棵树大 1/4。(四舍五入)和 处的 |15=7+1+7每行的末尾包含:树的宽度为左侧空间的总和 + 相应行中树的宽度 + 右侧空间(左对齐)。

最佳答案

这是一种不同的方法,它计算一行中需要的空格的数量和fill字符的数量,然后使用printf 打印行。

public static void printChristmasTree(int height, char ch) {
if (height <= 4)
throw new IllegalArgumentException("Height must be 5 or higher");
for (int row = height; row > 0; row--) {
int spaces = (row > 2 ? row - 3 : height - 4);
int fill = (height - spaces) * 2 - 5;
System.out.printf("%2d|%s%s%s|%d=%d+%d+%d%n", row,
repeat(spaces, ' '), repeat(fill, ch), repeat(spaces, ' '),
spaces * 2 + fill, spaces, fill, spaces);
}
}
private static String repeat(int count, char ch) {
char[] buf = new char[count];
java.util.Arrays.fill(buf, ch);
return new String(buf);
}

测试

printChristmasTree(10, '*');
printChristmasTree(6, '#');

输出

10|       *       |15=7+1+7
9| *** |15=6+3+6
8| ***** |15=5+5+5
7| ******* |15=4+7+4
6| ********* |15=3+9+3
5| *********** |15=2+11+2
4| ************* |15=1+13+1
3|***************|15=0+15+0
2| *** |15=6+3+6
1| *** |15=6+3+6
 6|   #   |7=3+1+3
5| ### |7=2+3+2
4| ##### |7=1+5+1
3|#######|7=0+7+0
2| ### |7=2+3+2
1| ### |7=2+3+2

更新

这是 height/4 (四舍五入) 的躯干高度的逻辑,而不是上面代码使用的固定高度 2 .树干宽度仍然固定为 3。

public static void printChristmasTree(int height, char ch) {
final int trunkHeight = (height + 2) / 4; // rounded
final int treeWidth = (height - trunkHeight) * 2 - 1;
final int width = (treeWidth > 3 || trunkHeight == 0 ? treeWidth : 3);
for (int row = height; row > 0; row--) {
int fill = (row > trunkHeight ? (height - row) * 2 + 1 : 3);
int spaces = (width - fill) / 2;
System.out.printf("%2d|%s%s%s|%d=%d+%d+%d%n", row,
repeat(spaces, ' '), repeat(fill, ch), repeat(spaces, ' '),
spaces * 2 + fill, spaces, fill, spaces);
}
}

测试

printChristmasTree(5, '*');
printChristmasTree(4, '*');
printChristmasTree(3, '*');
printChristmasTree(2, '*');
printChristmasTree(1, '*');

输出

 5|   *   |7=3+1+3
4| *** |7=2+3+2
3| ***** |7=1+5+1
2|*******|7=0+7+0
1| *** |7=2+3+2
 4|  *  |5=2+1+2
3| *** |5=1+3+1
2|*****|5=0+5+0
1| *** |5=1+3+1
 3| * |3=1+1+1
2|***|3=0+3+0
1|***|3=0+3+0
 2| * |3=1+1+1
1|***|3=0+3+0
 1|*|1=0+1+0

关于Java 简单的圣诞树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com