在java中使用循环到模式的不同变体

时间:2015-04-20 06:58:57

标签: java algorithm loops

我一直在尝试for循环的不同变体,并且不知道如何制作这些模式:

模式

1
121
12321
1234321

我的代码如下,但不像上面的示例那样工作。

for (int i = 1 ; i <= rows ; i++) {
    for (int j = (rows + 1 - i) ; j  > 0 ; j-- ) {
        System.out.print(j);
    }   
    System.out.print("\n");
 }

5 个答案:

答案 0 :(得分:6)

您的代码仅打印每行的后缀,您缺少为每行写12....i
另外,循环应该从i开始,而不是从rows-i+1开始。

for (int i = 1 ; i <= rows ; i++) {
    //add an inner loop that prints the numbers 12..i
    for (int j = 1 ; j  < i ; j++ ) {
        System.out.print(j);
    }       
    //change where j starts from
    for (int j = i ; j  > 0 ; j-- ) { 
        System.out.print(j);
    }   
    System.out.println(""); //to avoid inconsistency between different OS
 }

答案 1 :(得分:4)

首先注意11 * 11 = 121,111 * 111 = 12321,等等。

那么10 n - 1是一个由n 9&#39组成的数字,所以(10 n - 1)/ 9由n 1&#组成39; S

所以我们得到:

int powerOfTen = 1;
for (int len = 0; len < 5; len++)
{
    powerOfTen = powerOfTen*10;
    int ones = (powerOfTen-1)/9;
    System.out.println(ones*ones);
}

答案 2 :(得分:3)

代码解释了一切!

public static void main(String[] args) {
    String front = "";
    String back = "";
    int rows = 5;
    for (int i = 1; i <= rows; i++) {
        System.out.println(front+i+back);
        front += i;
        back = i + back;
    }
}

答案 3 :(得分:1)

试试这个:它可能看起来太多循环,但却易于理解和有效。

public static void main(String[] args) {
    int rows=5;
    int i,j;
    for(i=1;i<=rows;i++)
    {
        /*print left side numbers form 1 to ...*/
        for(j=1;j<i;j++)
        {
            System.out.printf("%d", j);
        }


        /*Print the middle number*/
        System.out.printf("%d", i);


        /*print right numbers form ... to 1*/
        for(j=i-1;j>0;j--)
        {
            System.out.printf("%d", j);
        }
        System.out.println("");
    }

}

答案 4 :(得分:1)

int n=0;
for(int m =0; m<=5; m++){
  for(n= 1;n<=m;n++){
        System.out.print(n);
    }

    for(int u=n;u>=1;u--){

      System.out.print(u);
    }
    System.out.print("");
}