我的java程序中有以下二维数组。
Integer[][] arrayOfSets = {
{1,2,5,6,9,10},
{9,10,11,12},
{1,2,3,4},
{3,5,6,7,8},
{9,10,11,12},
{4,8},
};
有人可以向我展示如何使程序动态化的代码,程序要求用户输入行号和列号,即二维数组应该容纳多少个数组,然后询问用户有多大每个数组以及每个数组应该包含的数字是多少? 非常感谢提前。
这是我到目前为止所尝试的:
System.out.println("HOw many sets arrays would you like");
int numArrays=sc.nextInt();
Integer [][] arrayName = new Integer[numArrays][];
for(int i=0;i<arrayName.length;i++){
System.out.println("enter the size of the array number"+i);
int sizeArray=sc.nextInt();
for(int k=0;k<sizeArray;k++){
System.out.println("enter element");
int e=sc.nextInt();
arrayName[i][k]=e;
}
}
这看起来不错吗?感谢您提前获得所有帮助。
好的,我又修改了我的鳕鱼。以下就是我现在所拥有的:
System.out.print(“你想要多少个数组?”); int numSets = sc.nextInt(); Integer [] [] result = new Integer [numSets] [];
for (int k=0; k< numSets; k++){
System.out.println("Enter the size of the array");
int setSize = sc.nextInt();
Integer[] row = new Integer[setSize];
for (int m=0; m< setSize; m++){
System.out.println("enter element: ");
row[m] = sc.nextInt();
}
result[k] = row;
}
答案 0 :(得分:4)
你所拥有的几乎是正确的。这样:
Integer [][] arrayName = new Integer[numArrays][];
创建第一个维度,但您还需要创建单独的第二个维度。读完每个数组的大小后:
int sizeArray=sc.nextInt();
您需要创建相应的数组:
arrayName[i] = new Integer[sizeArray];
答案 1 :(得分:1)
以下是您可以调整的示例函数:
Integer[][] createSampleArray()
{
final int N1 = 5;
Random r = new Random();
Integer[][] result = new Integer[N1][];
for (int i = 0; i < N1; ++i)
{
final int N2 = r.nextInt();
Integer[] row = new Integer[N2];
for (int j = 0; j < N2; ++j)
{
row[j] = r.nextInt();
}
result[i] = row;
}
return result;
}
啊哈,你的问题是你没有创建任何一维数组来放置元素:
Integer [][] arrayName = new Integer[numArrays][];
for(int i=0;i<arrayName.length;i++){
System.out.println("enter the size of the array number"+i);
int sizeArray=sc.nextInt();
for(int k=0;k<sizeArray;k++){
System.out.println("enter element");
int e=sc.nextInt();
arrayName[i][k]=e;
}
}
在为每行首先指定arrayName[i][k]
之前,您无法指定arrayName[i]
:
arrayName[i] = new Integer[sizeArray]
;
答案 2 :(得分:1)
您只需提示用户输入初始数组大小,然后初始化数组。
import java.util.Scanner;
public class blah {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("How Many Rows?");
int rows = s.nextInt();
System.out.println("How Many Colums?");
int cols = s.nextInt();
int [][] arrayOfSets = new int [rows] [cols];
}
}
答案 3 :(得分:0)
答案 4 :(得分:0)
@casablanca答案是完美的。您需要在最后创建“Integer”类的对象
for(int j=0; j < arrayname[i].length; j++)
arrayname[i][j] = new Integer(int_value);