如何在java中使用for循环打印倾斜的金字塔图案?

q8l4jmvw  于 2023-06-04  发布在  Java
关注(0)|答案(5)|浏览(192)

我一直在尝试使用java中的for loop语句打印不同的模式。现在我想学习如何打印以下图案。它基本上是一个倾斜的金字塔类型的模式。

*
    **
    ***
    ****
    ***
    **
    *

我试着去做,我确实得到了正确的结果,但问题是,我认为我做的方式是一种不方便的方式。下面是代码:

for (int x = 1; x <= 4; x++) {
    for (int y = 1; y <= x; y++) {
        System.out.print("*");
    }
    System.out.println();
}
for (int x = 1; x <= 3; x++) {
    for (int y = 3; y >= x; y--) {
        System.out.print("*");
    }
    System.out.println();
}
ntjbwcob

ntjbwcob1#

你的代码产生了正确的输出,对我来说足够清楚。我唯一的建议是使用一个变量来表示金字塔的大小,而不是硬编码的值。
你可以用一种更紧凑的方式来写它,只使用2个循环,像这样:

int size = 7;
for (int row = 0; row < size; row++) {
    for (int column = 0; column <= Math.min(size-1-row, row); column++) {
        System.out.print("*");
    }
    System.out.println();
}

这里的想法是:

  • 对于金字塔的每一行(因此,不包括从0到size的行)
  • 我们需要确定要打印多少个星号。如果我们在金字塔的上半部分,它等于我们所在的行。如果我们在金字塔的下半部分,它等于size-1-row(随着行的增加而减少)。所以星号的计数是rowsize-1-row的最小值:这是使用Math.min(size-1-row, row)在单个语句中分解的。
bq8i3lrv

bq8i3lrv2#

这对我很有效:

public class DrawPattern {
    public static void main(String[] args) {
        int i, j;
        int num = 7;
        for (i = 0; i <= num; i++) {
            for (j = 0; j <= num; j++) {
                if (isConditionMatch(num, i, j)) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }

    }

    private static boolean isConditionMatch(int num, int i, int j) {
        return (i>j && i+j<=num);
    }
}

输出:

*       
**      
***     
****    
***     
**      
*
ki0zmccv

ki0zmccv3#

使用以下方法绘制以下Pyramid形状:
函数调用:

public static void main(String[] args) {
    int steps = 5;
    boolean useSaperator = true;

    pyramid(steps, useSaperator);
    pyramid_Left(steps, useSaperator, false);
    pyramid_Left(steps, useSaperator, true);
}
public static void print(Object o) {
    System.out.print(o);
}

函数调用的输出:

public static void pyramid(int steps, boolean useSaperator) {
    String saperator = " ";
    for (int i = 1; i <= steps; i++) {
        // For Spaces till i < steps
        for (int j = i; j < steps; j++) {
            print(" ");
            if (useSaperator && saperator.length() > 0) {
                print(saperator);
            }
        }
        // Left
        for (int j = i; j > 0; j--) {
            print(i);
            if (useSaperator && j - 1 > 0) {
                print(saperator);
            }
        }
        // Right - After completing Left, Avoid center element So, (i - 1)
        for (int k = i - 1; k > 0; k--) {
            if (useSaperator) {
                print(saperator);
            }
            print(i);
        }
        print("\n");
    }
}
public static void pyramid_Left(int steps, boolean useSaperator, boolean isTriangle) {
    String saperator = " * ";
    for (int i = 1; i <= steps; i++) {
        // Forward
        for (int j = 1; j <= i; j++) {
            print(i);
            if (useSaperator && j+1 <= i) {
                print(saperator);
            }
        }
        print("\n");
        if (i == steps && !isTriangle) {
            // Backward - After completing Forward
            int k = i - 1;
            while (k > 0) {
                for (int j = k; j > 0; j--) {
                    print(k);
                    if (useSaperator && j-1 > 0) {
                        print(saperator);
                    }
                }
                k--;
                print("\n");
            }
        }
    }
}
ajsxfq5m

ajsxfq5m4#

java中的for循环模式。
12345
1234
123
12
1
获取用户的输入。
包实践代码;

import java.util.*;
public class LoopPracticeCode {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        
        for(int i=input; i>0; i--) {
            for(int j = 1; j<=i; j++) {
                System.out.print(j);
            }
            System.out.println();
        }
        

    }

}
qnzebej0

qnzebej05#

Java中的模式

1
12
123
1234
12345
123456

解决方案:

import java.util.*;
public class Pattern{
public static void main(String[]args)
{
Scanner s=new Scanner(System.in);
int row=s.nextInt();
System.out.println("pattern is here");
for(int i=0;i<=row;i++)
{
for(int j=0; j<=row;j++)
{
System.out.print(j+"");

 }
System.out.println();

}
s.close();

}
}

输出:

1
12
123
1234
12345
123456

相关问题