无法打印图案

时间:2017-02-17 17:29:56

标签: java

我创建了应该打印像

这样的模式的代码
12345
 2345
  345
   45
    5

我有下面编写的代码,逻辑在python中运行正常但在java中输出不同。

class Testing{
    public static void main(String args[])
    { 
        for (int i = 1; i<6;i++)
        {

            for (int j =0; j<i-1;j++)
                { 
                System.out.print(" ");
                }
                while (i < 6){ 
                    System.out.print(k);
                    System.out.println(); 
                    i++;
                } 
        }
    }
}   

输出只是12345。我不明白为什么它只迭代一次for循环只有一次。

3 个答案:

答案 0 :(得分:1)

while控件使用另一个变量。

public class Testing {

    public static void main(String args[]) {
        int k;
        for (int i = 1; i < 6; i++) {

            for (int j = 0; j < i - 1; j++) {
                System.out.print(" ");
            }
            k = i;
            while (k < 6) {
                System.out.print(k);
                k++;
            }
            System.out.println();
        }
    }
}

您可以在此link

中看到这一点

这将告诉你:

12345
 2345
  345
   45
    5

答案 1 :(得分:0)

注意:当&#39; while循环&#39;增加。这增加了i值大于6.所以下次它终止外循环。那是你的错。

package com.appointment.api;

class Testing {
    public static void main(String args[]) {
        for (int i = 1; i < 6; i++) {
            System.out.println();
            for (int j = 0; j < i - 1; j++) {
                System.out.print(" ");
            }
            int x = i;
            while (x < 5) {
                System.out.print(i);
                x++;
            }
        }
    }
}

答案 2 :(得分:0)

以下是问题的实施:

IntStream.rangeClosed(1, MAX)
            .forEach(i -> IntStream.rangeClosed(1, MAX)
                    .mapToObj(j -> j == MAX ? j + "\n" : j >= i ? j : " ")
                    .forEach(System.out::print)
            );

设置MAX = 5,它将打印您的图案。

输出:

12345
 2345
  345
   45
    5