在java中,是否可以从字符串中命名数组?

时间:2011-03-20 18:20:13

标签: java arrays

我是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();
    }
}

7 个答案:

答案 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,除非你有一个很好的理由使用数组。