2017-04-21 60 views
-2

代碼未運行?嘗試將值輸入到2d數組並打印出來,代碼未運行

import java.util.Scanner; 
public class Array2dNightPractice 
{ 
    int[][] studentmarks; 
    studentmarks = new int[3][3]; 

    Scanner kb = new Scanner(System.in); 
    System.out.println("Enter 9 integers"); 

    for(int row = 0;row<3;row++){ 
     for(int col=0;col<3;col++){ 
      studentmarks[row][col] = kb.nextInt(); 
     } 
    } 

    for(int row = 0; row < 3; row++) { 
     for(int col = 0; col < 4; col++) { 
      System.out.print(studentmarks[row][col] + " "); 
     } 
     System.out.println(); 
    } 
} 
+1

什麼是錯誤?請詳細說明你的問題。 – rotgers

+1

這個for(int col = 0; col <4; col ++)'可能會給你一個錯誤,因爲只有3個索引。沒有'studentmarks [3] [4]'。它顯然應該是for(int col = 0; col <3; col ++)'。 – rotgers

+0

你應該看到索引超出範圍錯誤?你看到了嗎? –

回答

0

你得到IndexOutOfBoundsException因爲這個 - >col < 4

for(int col = 0; col < 4; col++) 

改成這樣:

for(int col = 0; col < studentmarks[row].length; col++) 

側面說明 - 利用length屬性,以防止出現錯誤,比如你剛剛遇到的一個。

完整的解決方案:

for(int row = 0; row < studentmarks.length; row++) { 
    for(int col = 0; col < studentmarks[row].length; col++) { 
     System.out.print(studentmarks[row][col] + " "); 
    } 
    System.out.println(); 
} 
0

錯誤來自於第二個在數字4超過綁定的陣列studentMarks的for循環應該3 一個好習慣培養是創建常量變量需要每行和每列的大小,所以你不會陷入這樣的錯誤。 類似這樣的:

import java.util.Scanner; 
public class Array2dNightPractice{ 
    public static void main(String[] agrs){ 
    final int ROW =3, COL=3; // constant variable to determine the size of the 2d array 
    int[][] studentMarks = new int[ROW][COL]; 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter 9 integers"); 
    for(int row = 0;row<ROW;row++){ //note how I don't need to memorize and rewrite the numbers every time 
     for(int col=0;col<COL;col++){ 
      studentMarks[row][col] = in.nextInt(); 
     } 
    } 
    // print the marks as matrix 
    for(int row =0; row <ROW; row++) { 
     for(int col =0; col <COL; col++) { 
      System.out.print(studentMarks[row][col] + " "); 
     } 
     System.out.println(); 
    } 
    } 
} 
相關問題