Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有条件地设置数组变量类型_Java_Arrays_Types_Conditional_Primitive - Fatal编程技术网

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

Java 有条件地设置数组变量类型,java,arrays,types,conditional,primitive,Java,Arrays,Types,Conditional,Primitive,我正在创建一个Java程序,它将以图形方式显示点。 坐标从.txt文件读取,并存储在适当类型的数组int[]或double[]中 下面的代码说明了我想要什么。虽然它不起作用,因为数组不是int[]和double[]的超类 正如您所见,我曾考虑使用多态性,但我不知道int[]和double[]的超类是什么。他们的超类是什么?或者有没有更好的方法来进行条件输入?如果我使用对象超类来声明坐标,那么它将不能作为数组使用 这是一份作业。我在这里试图解决的问题的细节如下: 程序读取[文本文件]的值,并将其转

我正在创建一个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