【问题标题】:How to insert values in two dimensional array programmatically?如何以编程方式在二维数组中插入值?
【发布时间】:2012-05-31 20:53:03
【问题描述】:

我想在 java 中动态地做到这一点。我知道如何在一维数组中插入值。我对二维数组有点困惑。

static final String shades[][] = {


 // Shades of grey
  {
    "lightgrey", 
    "dimgray", 
    "sgi gray 92", 
  },
 // Shades of blue
  {
    "dodgerblue 2", 
    "steelblue 2", 
    "powderblue", 
  },
// Shades of yellow
  {
    "yellow 1",
    "gold 1",
    "darkgoldenrod 1", 
  },
 // Shades of red
  {
    "indianred 1", 
    "firebrick 1", 
    "maroon", 
  }
};

【问题讨论】:

    标签: java android arrays multidimensional-array arraylist


    【解决方案1】:
    String[][] shades = new String[intSize][intSize];
     // print array in rectangular form
     for (int r=0; r<shades.length; r++) {
         for (int c=0; c<shades[r].length; c++) {
             shades[r][c]="hello";//your value
         }
     }
    

    【讨论】:

      【解决方案2】:

      尝试在下面编写代码,

      String[][] shades = new String[4][3];
      for(int i = 0; i < 4; i++)
      {
        for(int y = 0; y < 3; y++)
        {
          shades[i][y] = value;
        }
      }
      

      【讨论】:

        【解决方案3】:

        您不能将值“添加”到数组中,因为数组长度是不可变的。您可以在特定的数组位置设置值。

        如果您知道如何处理一维数组,那么您就会知道如何处理 n 维数组:Java 中没有 n 维数组,只有数组的数组(数组中的......)。

        但您可以链接索引运算符以访问数组元素。

        String[][] x = new String[2][];
        x[0] = new String[1];
        x[1] = new String[2];
        
        x[0][0] = "a1";
            // No x[0][1] available
        x[1][0] = "b1";
        x[1][1] = "b2";
        

        注意子数组的维度不需要匹配。

        【讨论】:

          【解决方案4】:

          如果您事先不知道需要处理多少个元素,则使用集合可能是一个更好的解决方案 (https://en.wikipedia.org/wiki/Java_collections_framework)。也可以创建一个更大的新二维数组,复制旧数据并在其中插入新项目,但集合框架会自动为您处理。

          在这种情况下,您可以使用字符串映射到字符串列表:

          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;
          
          public class MyClass {
              public static void main(String args[]) {
                  Map<String, List<String>> shades = new HashMap<>();
          
                  ArrayList<String> shadesOfGrey = new ArrayList<>();
                  shadesOfGrey.add("lightgrey");
                  shadesOfGrey.add("dimgray");
                  shadesOfGrey.add("sgi gray 92");
          
                  ArrayList<String> shadesOfBlue = new ArrayList<>();
                  shadesOfBlue.add("dodgerblue 2");
                  shadesOfBlue.add("steelblue 2");
                  shadesOfBlue.add("powderblue");
          
                  ArrayList<String> shadesOfYellow = new ArrayList<>();
                  shadesOfYellow.add("yellow 1");
                  shadesOfYellow.add("gold 1");
                  shadesOfYellow.add("darkgoldenrod 1");
          
                  ArrayList<String> shadesOfRed = new ArrayList<>();
                  shadesOfRed.add("indianred 1");
                  shadesOfRed.add("firebrick 1");
                  shadesOfRed.add("maroon 1");
          
                  shades.put("greys", shadesOfGrey);
                  shades.put("blues", shadesOfBlue);
                  shades.put("yellows", shadesOfYellow);
                  shades.put("reds", shadesOfRed);
          
                  System.out.println(shades.get("greys").get(0)); // prints "lightgrey"
              }
          }
          

          【讨论】:

            【解决方案5】:

            将其视为数组的数组。

            如果你这样做 str[x][y],那么就会有长度为 x 的数组,其中每个元素又包含长度为 y 的数组。在java中,第二维没有必要具有相同的长度。 所以对于 x=i 你可以有 y=m 和 x=j 你可以有 y=n

            为此,您的声明看起来像

            字符串[][] 测试 = 新字符串[4][]; 测试[0] = 新字符串[3]; 测试[1] = 新字符串[2];

            等等。

            【讨论】:

              【解决方案6】:

              this is output of this program

              Scanner s=new Scanner (System.in);
              int row, elem, col;
              
              Systm.out.println("Enter Element to insert");
              elem = s.nextInt();
              System.out.println("Enter row");
              row=s.nextInt();
              System.out.println("Enter row");
              col=s.nextInt();
              for (int c=row-1; c < row; c++)
              {
                  for (d = col-1 ; d < col ; d++)
                       array[c][d] = elem;
              }
              for(c = 0; c < size; c++)
              { 
                 for (d = 0 ; d < size ; d++)
                       System.out.print( array[c] [d] +"   ");
                 System.out.println();
              }
              

              【讨论】:

              • 欢迎您,您应该解释一下这个答案的有趣之处。但当然,您只会将elem 插入最后一个单元格,因为int c = row -1 而不是int c = 0d 相同)。
              • size 从哪里来循环你的“方阵”?
              猜你喜欢
              • 1970-01-01
              • 2021-11-02
              • 2023-01-25
              • 2018-02-06
              • 2018-05-15
              • 1970-01-01
              • 1970-01-01
              • 2014-08-18
              • 2022-01-19
              相关资源
              最近更新 更多