有条件地设置数组变量类型
Conditionally setting array variable type
我正在创建一个 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
,那么它就不会像数组一样工作。
这是作业。我在这里要解决的问题的详细信息如下:
The program reads the values [of the text file], converting them to
integers or doubles as appropriate, storing them internally in an
array.
我解释说数组应该是它存储的类型,但也许它只是说将数组中的值存储为数值而不是原始 String
类型...
如果使用双精度数组,它将能够同时包含整数和双精度数:
double[] coordinates = new double[10];
coordinates[0] = 1.5; //double
coordinates[1] = 2; //integer
java 基本类型没有超类 - 它们不是对象。但是,自动装箱会转换它们,因此您可以只使用 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());
将return:
Type: java.lang.Float
Type: java.lang.Integer
Type: java.lang.Double
我正在创建一个 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
,那么它就不会像数组一样工作。
这是作业。我在这里要解决的问题的详细信息如下:
The program reads the values [of the text file], converting them to integers or doubles as appropriate, storing them internally in an array.
我解释说数组应该是它存储的类型,但也许它只是说将数组中的值存储为数值而不是原始 String
类型...
如果使用双精度数组,它将能够同时包含整数和双精度数:
double[] coordinates = new double[10];
coordinates[0] = 1.5; //double
coordinates[1] = 2; //integer
java 基本类型没有超类 - 它们不是对象。但是,自动装箱会转换它们,因此您可以只使用 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());
将return:
Type: java.lang.Float
Type: java.lang.Integer
Type: java.lang.Double