我不能写这个模式的代码

时间:2016-06-05 06:36:01

标签: java

1 2 3 4 

8 7 6 5

9 10 11 12

16 15 14 13

class pattern
{
    public static void  main()


    {
        for(int i=1;i<=4;i++)
        {
            if(i%2==0)
        for(int q=1;q<=12;q+=8)
        {
            for(int j=i;i<4;i++)
            {
            System.out.print(j+" ");
            if(j==4)
            break;
        }
    }
}
}

 }       

我尝试了这个,但它没有用。

2 个答案:

答案 0 :(得分:1)

请您尝试以下解决方案:

public class Test {
  public static void main(String[] args) {
    int lines=4;        
    int num=1;
    for(int i=1; i<=lines; i++){
        for(int j=1; j<=4; j++){
            System.out.print(num+" ");
            if(i%2==0){
                num--;
            }else{
                num++;
            }

        }
        System.out.println();
        if(i%2==0){
            num++;
        }else{
            num--;
        }           
        num=num+4;          
    }       
  }
}

说明:行的最后一位和下一行的第一位之间的差异是4.但是由于内部循环在最后一位数字终止之前递增或递减,我们需要执行以下操作:

if(i%2==0){
    num++;
}else{
    num--;
}           
num=num+4;  

如果检查行的编号,您会发现奇数行(第1行,第3行等)中的数字正在增加,偶数行中的数字正在减少(第2行,第4行等)减少,所以需要以下内容:

for(int j=1; j<=4; j++){
    System.out.print(num+" ");
    if(i%2==0){
        num--;
    }else{
        num++;
    }                   
}

答案 1 :(得分:0)

试试这个 -

public class PrintPatterns {

public static void main(String[] args) {

/ * 1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13 * /

    int noOfColumns = 4;
    int totalElements = 16;
    int incrementalValue = 0;
    int reminderOfTotalVsCols = totalElements % noOfColumns;
    int devidentOfTotalVsCols = totalElements / noOfColumns;
    int totalNoOfRows = (reminderOfTotalVsCols == 0 ) ? (devidentOfTotalVsCols) : (devidentOfTotalVsCols + 1);
    for(int i= 0; i < totalNoOfRows; i++ ){
        if(i == totalNoOfRows - 1 && reminderOfTotalVsCols > 0 ) 
            noOfColumns = reminderOfTotalVsCols;
        if(i % 2 == 0){
            incrementalValue = i * 4 + 1;
            for(int j = 0; j< noOfColumns; j ++){
                System.out.print(incrementalValue++ + "\t");    
            }
        }else{
            incrementalValue = i * 4 + 4;
            for(int j = 0; j< noOfColumns; j ++){
                System.out.print(incrementalValue-- + "\t");    
            }
        }
        System.out.println();
    }
}

}

该解决方案适用于以下模式 -

totalElements = 22

1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
17 18 19 20
24 23

totalElements = 16

1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13