Java 有条件地设置数组变量类型
我正在创建一个Java程序,它将以图形方式显示点。 坐标从.txt文件读取,并存储在适当类型的数组int[]或double[]中 下面的代码说明了我想要什么。虽然它不起作用,因为数组不是int[]和double[]的超类 正如您所见,我曾考虑使用多态性,但我不知道int[]和double[]的超类是什么。他们的超类是什么?或者有没有更好的方法来进行条件输入?如果我使用对象超类来声明坐标,那么它将不能作为数组使用 这是一份作业。我在这里试图解决的问题的细节如下: 程序读取[文本文件]的值,并将其转换为 整数或双精度(视情况而定),将它们存储在 数组Java 有条件地设置数组变量类型,java,arrays,types,conditional,primitive,Java,Arrays,Types,Conditional,Primitive,我正在创建一个Java程序,它将以图形方式显示点。 坐标从.txt文件读取,并存储在适当类型的数组int[]或double[]中 下面的代码说明了我想要什么。虽然它不起作用,因为数组不是int[]和double[]的超类 正如您所见,我曾考虑使用多态性,但我不知道int[]和double[]的超类是什么。他们的超类是什么?或者有没有更好的方法来进行条件输入?如果我使用对象超类来声明坐标,那么它将不能作为数组使用 这是一份作业。我在这里试图解决的问题的细节如下: 程序读取[文本文件]的值,并将其转
我的解释是,数组应该是它正在存储的类型,但可能它只是说将数组中的值存储为数值而不是原始字符串类型…如果使用双精度数组,它将能够同时包含整数和双精度:
double[] coordinates = new double[10];
coordinates[0] = 1.5; //double
coordinates[1] = 2; //integer
java基本类型没有超类——它们不是对象。但是,自动装箱将转换它们,因此您可以只使用数字数组,这是数值类的超类:
Number[] numbers = new Number[3];
然后:
将返回:
Type: java.lang.Float
Type: java.lang.Integer
Type: java.lang.Double
你能解释一下你的问题吗?你愿意将从文件中读取的int和double值存储到一个包含这两种类型的数组中吗?你应该使用double,不需要int-type。int[]和double[]的超类是Object,这对你没有任何帮助。你尝试的方法行不通,你确定你正确理解了你的任务吗?您可以切换到包装类并使用数字[],但这也不是一个很好的解决方案,尽管有时老师给出的作业考虑不周。谢谢您的回复!这是我通常会做的,但这是一门课程,作业的详细内容是:程序读取值,将它们转换成整数或双精度浮点,并将它们存储在数组中。@MichelleB。那个作业并不禁止使用这个答案。它并没有说明数组的类型。@Kayaman感谢您指出这一点。你说得对。我把事情弄得比实际情况更复杂了。
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