如何在Java中用不同类型的变量填充二维数组

时间:2015-01-17 15:08:00

标签: java arrays

我想创建一个数组,我可以根据具体情况放置不同类型的变量,我将如何做到这一点?香港专业教育学院尝试自己编写代码,但当我尝试编译它时,我仍然得到一个错误,说我无法将说明int转换为数据,这是我的方法:

private static Data[][] set(Scanner sc, int grid, int collumn) {
    Data[][] data = new Data[collumn][];
    for (int i = 0; i < collumn; i++) {
        switch(sc.nextInt()) {
            case 0:
                data[i] = new int[grid];
            case 1:
                data[i] = new String[grid];
            case 2: 
                data[i] = new boolean[grid];
        }
    }
    return data;
}

我有一个Data类,但它是空的,我只是在main方法的开头读取grid和collumn,除了2条扫描仪行之外它也是空的,我是否必须在Data中编写任何特定的内容类?

这是我的完整代码:

import java.util.Scanner;

class dn11 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    grid = sc.nextInt();
    collumn = sc.nextInt();
    set(sc, grid, collumn);

  }


private static Data[][] set(Scanner sc, int grid, int collumn) {
    Data[][] data = new Data[collumn][];
    for (int i = 0; i < collumn; i++) {
        switch(sc.nextInt()) {
            case 0:
                data[i] = new int[grid];
            case 1:
                data[i] = new String[grid];
            case 2: 
                data[i] = new boolean[grid];
        }
    }
    return data;
}



private static abstract class Data extends dn11 {

}

}

2 个答案:

答案 0 :(得分:1)

在这种情况下,您只能这样做:

     data[i] = new data[grid];

因为数据数组只能包含数据类型的对象。

你可以将3个属性放在这个类中:

    int i;
    String s;
    Boolean b;

和另外1个属性,用于跟踪其int或String或Boolean是否有效 例如

   int val;

现在如果val为1则String应包含其值,如果val为2则int包含值。

变量val可以在构造函数中初始化。

答案 1 :(得分:1)

我将如何将'某事'存储到数组中的示例:

class dn11 {

    public static void main(String[] args) {
        int rows = 5;
        int cols = 5;
        Object[][] data = new Object[rows][cols];
        data[2][4] = "content of 2-4"; //stores a String
        data[3][1] = 3.14; //stores a double
        data[0][0] = 100; //stores an int

        for (int row = 0; row < rows; row++) {
            for (int col = 0; col < cols; col++) {
                System.out.print(data[row][col] + " / ");
            }
            System.out.println();
        }
    }
}

这将打印以下内容:

  

100 / null / null / null / null /
  null / null / null / null / null /
  null / null / null / null / 2-4的内容/
  null / 3.14 / null / null / null /
  null / null / null / null / null /

null表示在该单元格中没有存储任何内容。