我正在创建一个以图形方式显示点的Java程序。
坐标从.txt文件中读取,并存储在适当类型的数组int[]
或double[]
中。
以下代码说明了我想要的内容。 (虽然它不起作用,因为Array
不是int[]
和double[]
的超类。)
//Declare local variable
Array coordinates;
//Determine data type
if(scan.hasNextInt()){
coordinates = int[10];
} else if(scan.hasNextDouble()){
coordinates = double[10];
}
我正在考虑使用多态,正如您所看到的,但我不知道int[]
和double[]
的超类是什么。他们的超类是什么?或者有更好的方法来进行这种条件打字吗?如果我使用Object超类来声明coordinates
,那么它将不会作为数组运行。
这是作业。我在这里要解决的细节如下:
程序读取[文本文件]的值,将它们转换为 适当的整数或双精度,将它们存储在内部 阵列。
我认为这意味着数组应该是它所存储的类型,但也许只是说将数组中的值存储为数值而不是原始的String
类型...
答案 0 :(得分:1)
如果使用双数组,它将能够包含整数和双精度数:
double[] coordinates = new double[10];
coordinates[0] = 1.5; //double
coordinates[1] = 2; //integer
答案 1 :(得分:0)
java基元类型没有超类 - 它们不是对象。但是,autoboxing会转换它们,所以你可以使用Number数组,它是数字类的超类:
Number[] numbers = new Number[3];
然后:
numbers[0] = 1.5f;
numbers[1] = 1;
numbers[2] = 3.2d;
for (Number n : numbers)
log.info("Type: "+n.getClass().getName());
将返回:
Type: java.lang.Float
Type: java.lang.Integer
Type: java.lang.Double