gpt4 book ai didi

java - 如何在java中打印领结?

转载 作者:行者123 更新时间:2023-12-03 23:02:04 25 4
gpt4 key购买 nike

如果输入 N = 5 输出,如何制作此模式:

*    *
** **
******
** **
* *
这是我的代码
for(int i = 0; i < n + 1; i++) {
for(int j = 0; j < n + 1; j++) {
if ((j > i && j < n - i) || (j > (n-i) && j < i && i > n))
System.out.print(" ");
else
System.out.print("*");
}
System.out.println();
}
结果是这样的:
*    *
** **
******
******
******
******
我怎么能解决这个问题?

最佳答案

您使用过 OR ||将“”的上方向下三角形和“”的下方向上三角形组合起来。好主意。
您将上三角形描述为 (j > i && j < n - i) , 那是正确的。
但是,您将下三角形描述为 (j > (n-i) && j < i && i > n) .
这就是问题所在。 i > n对于 i 来说永远不是真的从 0 到 n就像在您的外循环构造中一样。为了描述模式的下半部分,您应该使用 i>n/2 .然而,您可以完全放弃条件的那部分,因为第一部分中的反比较无论如何只适用于下半部分。
所以(j > (n-i) && j < i) .
这让你:

*    *
** **
******
******
** **
顺便说一句, n行,而不是 n+1外循环中的行。
如您所见,“”的下三角形太小了。两者,右侧和左侧。
所以你需要让你的条件更慷慨,即“低等”和“高等”,而不是“低”和“高”。在代码中 (j >= (n-i) && j <= i) .
把它放在一起:
public class Main {
static final int n = 5;

public static void main(String[] args)
{
for(int i = 0; i < n; i++) // only n lines
{
for(int j = 0; j < n+1; j++) {
if ((j > i && j < n - i) ||
(j >= (n-i) && j <= i)) // more generous and no second condition
System.out.print(" ");
else
System.out.print("*");
}
System.out.println();
}
}
}
此代码与您的尝试非常相似,可让您获得所需的
*    *
** **
******
** **
* *

关于java - 如何在java中打印领结?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65010319/

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