如何以编程方式在二维数组中插入值?
Posted
技术标签:
【中文标题】如何以编程方式在二维数组中插入值?【英文标题】: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",
;
【问题讨论】:
【参考方案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 = 0
(d
相同)。
size
从哪里来循环你的“方阵”?以上是关于如何以编程方式在二维数组中插入值?的主要内容,如果未能解决你的问题,请参考以下文章