gpt4 book ai didi

java - Java 中的金字塔模式

转载 作者:行者123 更新时间:2023-11-29 05:22:44 24 4
gpt4 key购买 nike

在这个高级站点上提出这样一个新手问题实在是太难了。但经过这么多尝试,甚至失去了希望,我被迫把自己带到这里。我无法打印以下图案:

                    1                                                                                                                              
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
1 2 4 8 16 32 16 8 4 2 1

但经过我的不懈努力,我达到了以下目标:

public static void main(String[] args) {
int num = 1;
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15 - i; j++) {
System.out.print(" ");
}
for (int k = 0; k <= i; k++) {
System.out.print(num + " ");
}
System.out.println();
}
}


1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1

最佳答案

来了

public static void main(String[] args) {
int max = 6;
int padLength = (int) Math.ceil(Math.log10(Math.pow(2, max) + 1)) + 2;
for (int i = 0; i < max; i++) {
for (int j = 1; j < max - i; j++) {
System.out.print(pad(" ", padLength));
}
for (int k = 0; k <= i; k++) {
System.out.print(pad(Math.pow(2, k), padLength));
}
for (int k = i - 1; k >= 0; k--) {
System.out.print(pad(Math.pow(2, k), padLength));
}
System.out.println();
}
}

public static String pad(double d, int l) {
Integer i = (int) d;
return pad(i.toString(), l);
}

public static String pad(String s, int l) {
return String.format("%-" + l + "s", s);
}

解释

int padLength = (int) Math.ceil(Math.log10(Math.pow(2, max) + 1)) + 2;

Math.pow(2,max) - 给我必须显示的最大数字

Math.ceil(Math.log10(number + 1)) - 我用它来确定特定 number 的字符串表示的长度。 Please refer to wikipedia to check what logarithm is.当数字是 10 的精确幂时,我加 1 以跳过边缘情况,例如log10(10)->1(这永远不会发生在有问题的指定任务中,它只是为了解决方案的纯度)。 Ceil 只是向上取整。

+2 - 指定两个数字之间的最小间隔示例是 2 个空格长所以我只添加这个

你可以在这里使用 Integer.toString(((int)Math.pow(2, max))).length()+2 但它不是那么漂亮:)

return String.format("%-"+ l + "s", s);

首先我构建格式字符串,看起来像%-3s,表示打印最小长度为3的String,右边填充。第二个参数是我要打印的字符串。引用documentation

Running example

关于java - Java 中的金字塔模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24030676/

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