有条件地设置数组变量类型

时间:2018-01-27 20:13:52

标签: java arrays types conditional primitive

我正在创建一个以图形方式显示点的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类型...

2 个答案:

答案 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