Java使用for循环打印某些模式

时间:2010-12-15 15:01:42

标签: java for-loop

下面是我的代码,任何人都可以帮助我,我坚持*部分

我想要像这样的输出

     9
    989
   98789
  9876789
 987656789

......等等

    for (int i = 1; i <= l; i++) {
        for (int j = 1; j <= l - i; j++)
            System.out.print(" ");

        for (int j = 1; j <= (2 * i - 1); j++) {
            if((l-j) < l-i){
            // here System.out.print("*");
            }
            else
                System.out.print(l - j);

        }
        System.out.print("\n");
    }

3 个答案:

答案 0 :(得分:1)

我最终重写了它;我无法找出你错过的print的简明常量。如果您将i0循环到l(包括),则可以执行以下操作:

空间

最后一行(i = l)有0个空格,因此每行有l-i个空格:

for(int j = 0; j < l-i; j++)
    System.out.print(" ");

左/中心

每一行都从l开始,你想倒数直到你到达中心;由于当前行有l-i个空格且中心位于l+1(因为我包含了0中心的行),距离i+1,您需要输出通过l-i包含

for(int j = l; j >= l-i; j--)
    System.out.print(j);

与上面相同的循环,但相反。开始1更高,因为中心已在上面处理,你不想再输出

for(int j = l-i+1; j <= l; j++)
    System.out.print(j);

答案 1 :(得分:0)

我的工作不仅仅是那一行

    for (int j = 1; j <= (2 * i - 1); j++) {
        if((l-j) < l-i){
        // here System.out.print("*");
        }
        else
            System.out.print(l - j);

要...

for(int j = 1; j < i; j++)
     System.out.print(10-j);

System.out.println(10-i);

for(int j = 1; j < i; j++)
     System.out.print(10-i+j);    

答案 2 :(得分:0)

这是完成的程序。我使用“分而治之”的方法(与Michael Mrozek基本相同的想法),并使用方法使其成为极易理解的程序。希望这会有所帮助。

public class PatternPrinter {
public static void main(String[] args) {
    printAllRows(9, 5);
}

public static void printAllRows(int max, int numOfRows) {
    for (int i = 1; i <= numOfRows; i++) {
        printRow(numOfRows - i, max, i);
        System.out.print("\n");
    }
}

public static void printRow(int numOfSpaces, int max, int num) {
    printSpaces(numOfSpaces);
    printLeftAndCenterPart(max, num);
    printRightPart(max, num - 1);
}

public static void printRightPart(int max, int num) {
    while(num > 0) {
        System.out.print(max - num + 1);
        num--;
    }
}

public static void printLeftAndCenterPart(int max, int num) {
    while(num > 0) {
        System.out.print(max--);
        num--;
    }
}

public static void printSpaces(int numOfSpaces) {
    while(numOfSpaces > 0) {
        System.out.print(" ");
        numOfSpaces--;
    }
}

}