逆转Java For循环

时间:2014-02-17 18:42:41

标签: java

我有这段代码,我试图将以下形状打印出来......

****
* *
**
*

当前代码:

  System.out.print("\nEnter number of rows: ");
  rows = kybd.nextInt();
  for (int i = 0; i < rows; i++) {
      System.out.print("*");
  }
  for (int i = 0; i < rows; i++) {
      for (int j = 1; j <= i; j++) {
          if (j == 1 || j == rows - 1 || j == i) {
              System.out.print("*");
          } else {
              System.out.print("0");
          }
      }
      System.out.println();
  }

由于某种原因,它打印出来像这样:

****
*
**
* *

任何想法如何反转第二个for循环,所以它以另一种方式打印?

3 个答案:

答案 0 :(得分:3)

我觉得你应该改变你的i循环

for (int i = rows - 1; i > 0 ; i--)

答案 1 :(得分:1)

试试这个:

    Scanner kybd = new Scanner(System.in);
    System.out.print("\nEnter number of rows: ");
    int rows = kybd.nextInt();

    if (rows > 1) {
        for (int i = 0; i < rows; i++)
            System.out.print("*");
        System.out.println();

        for (int i = rows - 1; i > 1; i--) {
            System.out.print("*");
            for (int j = 2; j < i; j++)
                System.out.print(" ");
            System.out.println("*");
        }
    }
    System.out.println("*");

示例输出:

Enter number of rows: 6
******
*   *
*  *
* *
**
*

答案 2 :(得分:0)

请注意,您要在单独的周期中打印出第一行星号,而不是在主周期内。如果你想走这条路,你需要将第一个循环放在第二个循环之后。

for (int i = 0; i < rows; i++) {
    for (int j = 1; j <= i; j++) {
        if ((j == 1) || (j == (rows - 1)) || (j == i)) {
            System.out.print("*");
        } else {
            System.out.print("0");
        }
    }
    System.out.println();
}
for (int i = 0; i < rows; i++) {
    System.out.print("*");
}