java中的星号和数字的平方

时间:2017-09-08 22:19:51

标签: java for-loop

我必须创建一个结果如下:

for n = 5

* 2 3 4 5
* * 3 4 5
* * * 4 5
* * * * 5
* * * * *

我的尝试:

int n = 5;

for (int i = 0; i < n; i++) {
    String row = "";
    for (int j = 0; j < n; j++) {
        row += "*";
            if (i==j) {
                System.out.print(row + "\n");
            }
        }
    }
}

结果是:

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

3 个答案:

答案 0 :(得分:1)

安娜,你应该这样做:

int n = 5;

for (int i = 0; i < n; i++) {
    String row = "";
    //This for build the entire output var
    for (int j = 0; j < n; j++) {
        if (i<j) { // if you are behind or in the line it receive a "*"
            row+=String.valueOf(j+1);
        } else { //if you are not it receive the number wich is j+1
            row += "*";
        }
    }
    System.out.println(row + "\n"); //Print the entire line
}

在您的实现中,您只在匹配行中打印,并且从不在第一个迭代循环中打印任何其他内容。 你觉得好吗?

答案 1 :(得分:0)

听起来你正试图解决一个测验。 您正在寻找的是该网格的模式,您的答案并不太远。

回顾原始样本: 当X(水平)大于Y(垂直)时,我们打印X,否则我们打印一个星号。每个元素之间都有一个空格。

public class Main9 {
for (int i = 0; i < n; i++) {
    String row = "";
    for (int j = 0; j < n; j++) {
        if (i > j) {
            // Now we should append X (or i in this case) to the row
            // Adding 1 to the base 0 integer
            //  and appending with a space
            row += (i+1)+" ";
        } else {
            // Otherwise just add "* "
            row += "* ";
        }
    }
    // Now that we're done with the j-loop we can print out the row
    System.out.println(row);
}

}

答案 2 :(得分:0)

您可以在没有任何字符串连接且不使用其他对象的情况下执行此操作。让我提供我的洗礼:

int n = 5;

for (int i = 0; i < n; i++) {
   for (int j = 0; j < n; j++) 
        System.out.print(j <= i ? "*" : ("" + (j + 1)));

    System.out.println();
}