2017-03-16 51 views
0

我想在一个方形矩阵中显示一个数字数组,在一个蛇形图案中增加1。不能得到正确的输出。用户输入行/列和矩阵显示。看下面的照片。我也尝试过如果使用模数的偶数/奇数行的语句,但仍然得到相同的输出。 (多多包涵,我是新来这个,关于格式抱歉,或者如果我失去了信息)循环不给我想要的矩阵输出

http://imgur.com/a/ZDhFw

import java.util.Scanner; 



public class A3_Q2 { 

public static void main(String[] args) 
{ 
    // TODO Auto-generated method stub 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("[-------------------------]"); 
    System.out.println("[  Array Pattern  ]"); 
    System.out.println("[-------------------------]"); 

    System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):"); 


    int arraySize = keyboard.nextInt(); 

    while(arraySize < 3) 
    { 
     System.out.println("Lets try this again ...."); 
     System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):"); 
     arraySize = keyboard.nextInt(); 
    } 


    int [][] pattern = new int[arraySize][arraySize]; 

    int i = 0; 
    int number = 1; 

    while (i < arraySize) 
    { 
     for (int j = 0; j < arraySize; ++j) 
     { 
      pattern[i][j] = number; 
      System.out.printf("%3d", pattern[i][j]); 
      number++; 
     } 

     System.out.println(""); 
     ++i; 
     for (int j = arraySize-1; j >= 0; --j) 

     { 
     pattern[i][j] = number; 
     System.out.printf("%3d", pattern[i][j]); 
     number++; 
     } 

     System.out.println(""); 
     ++i;  
    } 
    } 
} 

回答

0

我已经改变了你的代码,以便它的作品。正如你已经提到的,你可以在这里使用模运算符。

public static void main(String[] args) 
{ 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("[-------------------------]"); 
    System.out.println("[  Array Pattern  ]"); 
    System.out.println("[-------------------------]"); 

    System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):"); 


    int arraySize = keyboard.nextInt(); 

    while(arraySize < 3) 
    { 
     System.out.println("Lets try this again ...."); 
     System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):"); 
     arraySize = keyboard.nextInt(); 
    } 


    int [][] pattern = new int[arraySize][arraySize]; 

    int number = 1; 

    for(int i=0;i<arraySize;i++){ 
     if(i%2==0){ 
      for(int j=0;j<arraySize;j++){ 
       pattern[i][j]=number; 
       number++; 
      } 
     } 
     else{ 
      for(int j=arraySize-1;j>=0;j--){ 
       pattern[i][j]=number; 
       number++; 
      } 
     } 
     for(int j=0;j<arraySize;j++){ 
      System.out.printf("%3d", pattern[i][j]); 
     } 
     System.out.println(); 
    } 
} 
+0

好吧,我看到我的错误是当我用if/else。谢谢! – Mike

0

编辑:在IDE中对此进行测试以确保其正常工作。

您首先需要有模式[i] [j]的初始值。

for (int i = 0; i < arraySize; i++) { 
    for (int j = 0; j < arraySize; j++) { 
     pattern[i][j] = arraySize*i + j + 1; 
    } 
} 

你需要再有,将在升序打印出的数字时,我甚至是一个条件,当我是奇数下降。

for (int i = 0; i < arraySize; i++) { 
    if (i % 2 == 0) { 
     for (int j = 0; j < arraySize; j++) { 
      System.out.printf("%3d", pattern[i][j]); 
     } 
    } else { 
     for (int j = arraySize - 1; j >= 0; j--) { 
      System.out.printf("%3d", pattern[i][j]); 
     } 
    } 
    System.out.println(); 
}