如何正确声明存储6元素double类型向量的ArrayList?
解决ArrayList的类型声明问题
嘿,我一眼就看出问题所在啦——你没给ArrayList指定正确的泛型类型!你要存储的是double数组,所以得把泛型参数明确写成double[]才行,不然编译器根本没法识别你要存的元素类型。
具体修改点:
- 把方法的返回类型从
ArrayList<>改成ArrayList<double[]> - 把
manPlan的声明更新为ArrayList<double[]> manPlan = new ArrayList<>();
这样编译器就能准确识别你要存储的是double[]类型的对象,不会再出现类型不匹配的问题啦。
修改后的完整代码:
public static ArrayList<double[]> readFile(File file) throws IOException{ // Array containing all spacecraft states ArrayList<double[]> manPlan = new ArrayList<>(); // File reader BufferedReader reader = Files.newBufferedReader(file.toPath(), charset); String line; while ((line = reader.readLine()) != null) { if (validLine.matcher(line).find()){ // Build AbsoluteDate String[] columns = line.split("\\s+"); // Read orbital elements double var1 = Double.parseDouble(columns[4]); double var2 = Double.parseDouble(columns[5]); double var3 = FastMath.toRadians(Double.parseDouble(columns[6])); double var4 = FastMath.toRadians(Double.parseDouble(columns[7])); double var5 = FastMath.toRadians(Double.parseDouble(columns[8])); double var6 = FastMath.toRadians(Double.parseDouble(columns[9])); double variables[] = {var1, var2, var3, var4, var5, var6}; try { manPlan.add(variables); } catch (OrekitException e1) { logger.error("Orekit error, failed to build SpacecraftState", e); } } } reader.close(); return manPlan; }
额外小建议:
如果后续想让代码更易维护、更安全,可以考虑自定义一个类(比如OrbitalElements)来封装这6个double变量,而不是用数组。这样能避免数组的可变性问题,还能给每个变量起有意义的名字,代码可读性会提升不少~
内容的提问来源于stack exchange,提问作者oz380
相关产品推荐
相关产品推荐

