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[][]
。那么为什么会出现错误?
答案 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的关键字为对象创建一些内存。
然后,我不知道你最后的陈述是怎么做的。
此致