繁体   English   中英

用Java编写二维数组

[英]Writing two dimensional array in java

我的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 [] []结果= 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;
}

你所拥有的几乎是正确的。 这个:

Integer [][] arrayName = new Integer[numArrays][];

创建第一个尺寸,但是您还需要创建单独的第二个尺寸。 读完每个数组的大小后:

int sizeArray=sc.nextInt();

您需要创建相应的数组:

arrayName[i] = new Integer[sizeArray];

这是您可以调整的示例函数:

 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] ;

您只是提示用户输入初始数组大小,然后初始化数组。

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];
    }
}

@casablanca的答案是完美的。 您最终需要创建“ Integer”类的对象

 for(int j=0; j < arrayname[i].length; j++)
  arrayname[i][j] = new Integer(int_value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM