Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在列和行中打印正确数量的asterix?_Java - Fatal编程技术网

Java 如何在列和行中打印正确数量的asterix?

Java 如何在列和行中打印正确数量的asterix?,java,Java,我想打印asterix,它等于行数-它们应该从右侧开始。它应该在第一行以9个空格和1*开始,然后在第二行以2*和8个空格开始,依此类推,直到第十行,第十行应该有10*和0个空格,如下图所示: 我可以在每行打印正确数量的空格,在正确位置打印1*。例如,它在第一行打印9个空格和1*。但在第二行,它在第九个位置打印8个空格和1*,而不是两个??我看不到我的代码中遗漏了什么: for (int row = 1; row <= 10; row++) { for (int col = 10;

我想打印asterix,它等于行数-它们应该从右侧开始。它应该在第一行以9个空格和1*开始,然后在第二行以2*和8个空格开始,依此类推,直到第十行,第十行应该有10*和0个空格,如下图所示:

我可以在每行打印正确数量的空格,在正确位置打印1*。例如,它在第一行打印9个空格和1*。但在第二行,它在第九个位置打印8个空格和1*,而不是两个??我看不到我的代码中遗漏了什么:

for (int row = 1; row <= 10; row++) {
    for (int col = 10; col > row; col--) {
        System.out.print(" ");
        if (col <= row) {
            System.out.print("*");
        }
    }
    System.out.println("*");
}

有几种解决方案:

1或者为每行创建两个内部循环:一个用于写入空格,另一个用于写入星号

    final int rows = 10;
    for(int row = 1; row <= rows; row++) {
        for(int i = 0; i < (rows - row); i++) {
             System.out.print(" ");
        }
        for(int i = 0; i < (row); i++) {
             System.out.print("*");
        }
        System.out.println();
    }

这也可能有帮助:

    int n = 10;
    int k = 2 * n - 2; // number of spaces
    // outer loop to handle number of rows
    for (int i = 1; i <= n; i++) {
        // inner loop to handle number spaces
        for (int j = 1; j <= k; j++) {
            System.out.print(" "); // printing spaces
        }
        k = k - 2; // decrementing k after each loop
        // inner loop to handle number of columns
        for (int j = 1; j <= i; j++) {
            System.out.print("* "); // printing stars
        }
        // ending line after each row
        System.out.println();
    }

如果col是因为我试图弄清楚它..按照您的方法,将col>row更改为col>1,然后在if语句中将print移到new else。这将为您提供所需的输出。
final int rows = 10;
final String stars = "************************";
final String blanks = "                        ";
for(int row = 1; row <= rows; row++) {
    System.out.print(blanks.substring(0, rows - row));
    System.out.println(stars.substring(0, row));
}
    int n = 10;
    int k = 2 * n - 2; // number of spaces
    // outer loop to handle number of rows
    for (int i = 1; i <= n; i++) {
        // inner loop to handle number spaces
        for (int j = 1; j <= k; j++) {
            System.out.print(" "); // printing spaces
        }
        k = k - 2; // decrementing k after each loop
        // inner loop to handle number of columns
        for (int j = 1; j <= i; j++) {
            System.out.print("* "); // printing stars
        }
        // ending line after each row
        System.out.println();
    }