2017-08-28 96 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刚刚添加了一条评论:) –