2017-08-28 122 views
2
System.out.println("Enter number of rows"); 
int row = sc.nextInt(); 
int[][] twod = new int[row][]; 
for (int i=0; i < row; i++) 
{ 
    int p = i+1; 
    System.out.println("Enter number of columns for row number "+p); 
    int column = sc.nextInt(); 
    twod[row][column] = new int[row][column]; 
    for(int k = 0; k < column;k++) 
    { 
    int wat = k+1; 
    System.out.println("Enter element in row number "+p+" and column number "+ wat); 
    twod[i][k] = sc.nextInt(); 
    } 
} 

for(int men = 0; men < twod.length; men++) 
{ 
    for (int women = 0; women < twod[men].length; women++) 
    { 
    System.out.print(twod[men][women]); 
    } 
} 

當我嘗試運行程序,它給出INT [] []不能被轉換爲int

不兼容的類型:INT [] []不能被轉換爲int 數組twoD [行] [column] = new int [row] [column];

但我已經宣佈twodint[][]。那爲什麼會出現錯誤?

+0

行''''''''[行] [列] =新int [行] [列];'做? – Jens

回答

1

這是給你一個完整的代碼。

import java.util.Scanner; 

public class TestArray { 
    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 

     System.out.println("Enter number of rows"); 
     int row = sc.nextInt(); 
     int[][] twod = new int[row][]; 
     for (int i = 0; i < row; i++) { 

      int p = i + 1; 
      System.out.println("Enter number of columns for row number " + p); 

      int column = sc.nextInt();//for simplicity 

      twod[i] = new int[column]; 

      for (int k = 0; k < column; k++) { 
       int wat = k + 1; 
       System.out.println("Enter element in row number " + p + " and column number " + wat); 
       twod[i][k] = sc.nextInt(); 
      } 
     } 

     for (int men = 0; men < twod.length; men++) { 
      for (int women = 0; women < twod[men].length; women++) { 
       System.out.print(twod[men][women]); 
      } 
     } 
    } 
} 

首先,創建空的二維數組,每一行都有一維數組。

int [] [] twod = new int [row] [];

然後,您必須在for語句中指定用戶輸入中的每個一維數組。

twod [i] = new int [column];

int的類型是java中的基本類型之一,因此您不需要使用new關鍵字創建存儲空間。

但是,您應該考慮如果您的數組類型是對象,您必須在該對象中爲對象創建一些內存,並使用new作爲java的關鍵字。

然後,我不知道你想要處理你最後的陳述。

Regards,

4

你想要做什麼 twod[row][column] = new int[row][column];本質上是分配在索引[row][column]一個新的int[row][column]元素。這是行不通的,因爲twod對象中的所有元素的類型是int而不是int[][]

+0

閱讀他的代碼的第三行。他的問題是他想分配位置'twod [row] [column]'a ** new ** 2d array而不是單個int – XtremeBaumer

+0

@XtremeBaumer剛剛添加了一條評論:) –