我想创建一个数组,我可以根据具体情况放置不同类型的变量,我将如何做到这一点?香港专业教育学院尝试自己编写代码,但当我尝试编译它时,我仍然得到一个错误,说我无法将说明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 {
}
}
答案 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表示在该单元格中没有存储任何内容。