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;
}
}
}
}
}
我尝试了这个,但它没有用。
答案 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