【问题标题】:Writing two dimensional array in java在java中编写二维数组
【发布时间】:2010-11-26 23:46:43
【问题描述】:

我的 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(); 整数[][] 结果 = 新整数[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;
}

【问题讨论】:

  • 请查看我的代码,如果正确,请告诉我。谢谢。
  • 观察:Java 不支持真正的多维数组;相反,它支持一维数组,其中每个元素本身可以是另一个一维数组。区别在于分配内存的方式,其中a[i][j]a[i,j] 不同。
  • Does this look right?我不知道,你遇到了什么错误?

标签: java arrays


【解决方案1】:

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

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

创建第一个维度,但您还需要创建单独的第二个维度。读入每个数组的大小后:

int sizeArray=sc.nextInt();

你需要创建对应的数组:

arrayName[i] = new Integer[sizeArray];

【讨论】:

    【解决方案2】:

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

    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】:

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

       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] 之前,您不能分配arrayName[i][k]

      arrayName[i] = new Integer[sizeArray];

      【讨论】:

      • @user491753:当你喜欢一个答案时,通常的反应是投票和/或接受....
      • 我不知道该怎么做。我不断要求人们告诉我如何做到这一点,但没有人回答......
      • 它们位于任何答案的左上角:有一个投票计数,上面有一个向上箭头,下面有一个向下箭头,您还应该看到一个复选框的轮廓.点击相应的激活。
      【解决方案4】:

      【讨论】:

        【解决方案5】:

        @casablanca 的答案是完美的。最后你需要创建'Integer'类的对象

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

        【讨论】:

          猜你喜欢
          • 2012-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多