我是java的初学者,我想知道是否可以根据字符串的值来命名和创建数组。
这就是我所拥有的:
public static void array(){
createArray(array1, 100, 100);
}
public static void createArray(String name, int r, int c) {
int[][] name = new int[r][c];
}
我希望这能解释自己。感谢
编辑:上面的代码不起作用。我只是想知道是否有可能做上面的事情
EDIT2:作为java的初学者,我只是在观看教程,并用我学到的东西创建程序,以确保我理解正在教授的内容。我首先创建了一个创建多维数组的程序。然后它调用一个为数组赋值的方法,(row + 1)*(column + 1)。这使得表格很像乘法表。然后它将表格显示在屏幕上。
在我创建该程序之后,我希望能够创建数组,就像我为其分配值一样。所以我问了这个问题......
这是我的代码:
public static void array(){
int[][] array1 = new int[100][100];
int[][] array2 = new int[20][20];
setArrayValue(array1);
setArrayValue(array2);
drawArray(array1);
System.out.println();
drawArray(array2);
}
public static void setArrayValue(int x[][]){
for(int row = 0; row<x.length; row++){
for(int column=0; column<x[row].length; column++){
x[row][column]= (column+1)*(row+1);
}
}
}
public static void drawArray(int x[][]){
for(int row=0; row<x.length; row++) {
for(int column=0; column<x[row].length;column++){
System.out.print(x[row][column] + "\t");
}
System.out.println();
}
}
答案 0 :(得分:8)
你的概念没有意义。
您可能希望使用Map<String, int[][]>
,它会将名称映射到数组。
答案 1 :(得分:2)
您在Java中无法实现的目标。在createArray
方法中,name
的类型为String
,无法重新声明为int
数组。
也许您对使用String
个对象作为键的Map感兴趣?值可以是int
数组(或任何其他对象)。
答案 2 :(得分:2)
不,你做不到。
变量名在Java中不可变。
此外,在编译代码时,局部变量甚至会丢失其名称。变量名只是程序员区分变量的帮助。
答案 3 :(得分:1)
Nop无法完成。变量名称需要事先知道。
答案 4 :(得分:0)
不,这是不可能的。您可以使用TreeMap或其他Map实施来完成任务。
而不是说
name = something;
你会说
map.put(name, something);
而不是
name[0] + 7
你要说
map.get(name)[0] + 7
答案 5 :(得分:0)
正如其他人所说 - 这是不可能做到的。这是因为Java编译器需要在编译时知道变量的确切名称。这是强制性的,因为否则Java编译器不会知道您要寻址的变量,因此无法执行类型安全检查。
但是,如果你只想用一些唯一的ID标记你的变量,我想这个解决方案最接近SLaks所说的。只需使用Map,你应该很好。示例如下。
Map<String, int[][]> myMap = new HashMap<String, int[][]>();
myMap.put("someUniqueName", new int[][] {{0,0}, {1,1}});
以及后来:
int[][] array = myMap.get("someUniqueName");
希望有助于实现你想要的目标。
答案 6 :(得分:0)
严格:几乎;-)您可以使用AOP在类中添加动态字段,该字段可以是数组。但...
很难。
在大多数情况下,此解决方案过于复杂。你可以用一种更简单的方式解决你的真实问题。
一些建议:从头开始......并尝试尽可能多地使用List(接口)/ ArrayList,除非你有一个很好的理由使用数组。