在java中编写二维数组

时间:2010-11-26 23:46:44

标签: java arrays

我的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;
}

5 个答案:

答案 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);