2015-06-13 233 views
1

我正在尝试垂直填充矩阵,但缺少1行。你可以帮我吗 ?有代码。也许有一种更简单的方法来填充矩阵,但我无法找到它。填充垂直矩阵Java

public static void main(String[]args){ 
    Scanner input = new Scanner(System.in); 
    System.out.print("Enter the value of matrix: "); 
    int n = input.nextInt(); 

    int [][] matrix = new int [n][n]; 


    for (int i = 1; i < matrix.length; i++) { 
     matrix[0][i] = matrix[0][i -1] + n; 

    } 

    for(int i = 1; i < matrix.length; i++){ 
     for (int j = 0; j < matrix.length; j++){ 
     matrix[i][j] = matrix[i -1][j] + 1; 

     System.out.print(matrix[i][j] + " "); 

     } 
      System.out.println(); 

    } 

      input.close(); 
} 

输出: Enter the value of matrix: 4 1 5 9 13 2 6 10 14 3 7 11 15

+1

从填充环上取下打印件并在最后打印。你错过了第一行的打印,因为第二个循环从1开始.. – OldCurmudgeon

回答

0

尝试

public static void main(String[]args){ 
Scanner input = new Scanner(System.in); 
System.out.print("Enter the value of matrix: "); 
int n = input.nextInt(); 

int [][] matrix = new int [n][n]; 

matrix[0][0]=0; //you have forgotten the first value 
for (int i = 1; i < matrix.length; i++) { 
    matrix[0][i] = matrix[0][i -1] + n; 
    //initializing the first line 
} 

for(int i = 1; i < matrix.length; i++){ 
    for (int j = 0; j < matrix.length; j++){ 
    matrix[i][j] = matrix[i -1][j] + 1; 
    } 

    // re-loop to display but this time start with i=0 
    for(int i = 0; i < matrix.length; i++){ 
    for (int j = 0; j < matrix.length; j++){ 
    System.out.print(matrix[i][j] + " "); 
    } 

     System.out.println(); 

} 

     input.close(); 
} 
+0

@TashevTD请问你可以upvote,因为它是解决方案吗?谢谢。 – Dien

0

要垂直填充的矩阵,则必须通过在外环柱和通过内(嵌套的)环行环路。例如:

for(int j = 0; j < matrix.length; j++) { 

    for(int i = 0; i < matrix.length; i++) { 

     matrix[i][j] = /* The value you want to fill */; 
     .../* Other stuff you wanna do */ 
    } 
} 
1

你行缺少,因为你从来没有在你的第一个循环(即初始化你的第一行中的一个)印刷 - 你应该在一开始有0 4 10 12行。但只需一个嵌套循环就可以轻松完成。

0

有这样做的一个简单的方法:

保持像数的变化和迭代对列矩阵第一再行:

int count = 1; // or 0 if you start with 0 
int[][] a = new int[n][n]; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < n; j++) { 
     a[j][i] = count; // notice j first then i 
     count++; 
    } 

之后,你可以伊斯利打印出值:

for (int i = 0; i < n; i++) 
    for (int j = 0; j < n; j++) 
     System.out.println(a[i][j]);