使用for循环

时间:2016-02-18 11:05:27

标签: java

我需要使用for循环创建它。

输出

Output

我的代码在这里:

public class Assign01 {
    public static void main(String[] args) {
        int n, i = 0, k;
        for (n = 1; n <= 5; n++) {
            for (i = 1; i <= n; i++) {
                System.out.print(+i + "\t");
            }
            System.out.print("\n");
        }
    }
}

这就是输出。

输出

Output

3 个答案:

答案 0 :(得分:1)

在向上方向前以相反方向运行for循环。

public class Assign01 {
    public static void main(String[] args) {
        int n, i = 0, k;
        int maxN = 5;
        for (n = 1; n <= maxN; n++) {
            // below prints the tabs to pad the line.
            // this prints a tab (maxN - n) times.
            for(k = n; k < maxN; k++) {
                System.out.print("\t");
            }
            // below prints the number starting from the biggest, till the lowest
            // I use > 1 instead of >= 1 because you don't want to duplicate 1 twice.
            for (i = n; i > 1; i--) {
                System.out.print(i + "\t");
            }
            for (i = 1; i <= n; i++) {
                System.out.print(i + "\t");
            }
            System.out.print("\n");
        }
    }
}

输出(我的本地测试):

                                1
                        2       1       2
                3       2       1       2       3
        4       3       2       1       2       3       4
5       4       3       2       1       2       3       4       5

答案 1 :(得分:1)

您目前看到的内容非常类似于预期输出的右侧。所以你需要做的就是填写左侧。左侧恰好是右侧的反面,让我们看看我们如何能够反转内部的循环:

    for (i = n; i >= 1; i--) {
        System.out.print(+i + "\t");
    }

现在,如果您使用该代码并将其添加到当前内部for循环之上,那么您将获得非常接近答案的内容。您需要做的就是弄清楚如何删除中间的重复数字,并添加任何所需空格以填充左侧并创建金字塔形状。

答案 2 :(得分:0)

public class Assign01 {
    public static final int MIN = 1;
    public static final int MAX = 5;

    public static void main(String[] args) {
        for(int j = MIN; j <= MAX; j++) {
            for(int i = MIN, k = MAX; i <= MIN + 2*(MAX-MIN); i++) {
                if(k <= j) {
                    System.out.print("" + k + " ");
                } else {
                    System.out.print("  ");
                }
                if(i < MAX) {
                    k--;
                } else {
                    k++;
                }
            }
            System.out.println("");
        }
    }
}

打印:

        1         
      2 1 2       
    3 2 1 2 3     
  4 3 2 1 2 3 4   
5 4 3 2 1 2 3 4 5 

例如这个

public static final int MIN = 3;
public static final int MAX = 9;

打印

            3             
          4 3 4           
        5 4 3 4 5         
      6 5 4 3 4 5 6       
    7 6 5 4 3 4 5 6 7     
  8 7 6 5 4 3 4 5 6 7 8   
9 8 7 6 5 4 3 4 5 6 7 8 9 

考虑到我已经解决了这项任务,你的工作就是找出我在这里所做的事情。这是一个更有趣的任务,不是吗? :)