int [] []无法转换为int

时间:2017-08-28 07:11:42

标签: java arrays oop multidimensional-array int

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         twod [row] [column] = new int [row] [column];

但我已将twod声明为int[][]。那么为什么会出现错误?

3 个答案:

答案 0 :(得分:4)

您正在尝试使用该声明 twod[row][column] = new int[row][column];实质上是在索引[row][column]处为新int[row][column]分配元素。这不起作用,因为twod对象中所有元素的类型都是int而不是int[][]

答案 1 :(得分:1)

试试这个

twod[i] = new int[column];

答案 2 :(得分: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的关键字为对象创建一些内存。

然后,我不知道你最后的陈述是怎么做的。

此致