我一直在尝试使用类似的方法将数组存储在数组列表中:
static ArrayList<double []> Shapes;
public static void Test(){
double [] Test = new double [2];
Test[0] = 1;
Test[1] = 2;
Shapes.add(Test);
}
我不确定这是否是你可以做的事情,但如果有人知道如何解决这个问题,我将不胜感激。
答案 0 :(得分:2)
基本上,这不会起作用,因为你需要在某些时候调用= new ArrayList<double[]>();
(或者在某些java版本中没有double[]
)。
如果你想存储关于不同形状的信息,你应该考虑为它们创建一个类,然后存储该类的实例。
答案 1 :(得分:0)
这是我猜的最简单的方法:
new ArrayList<Double>(Arrays.asList(Test))
答案 2 :(得分:0)
您的代码在Java语法中看起来几乎是正确的,尽管需要样式更改,因为Java约定是使用变量和方法的小写首字母。其他海报已经指出了缺少'new ArrayList'来创建数组。
问题在于,从面向对象的设计角度来看,使用double []来保存关于不同形状的信息并不是一个好的设计。我想你想要的是和ShapeInfo的ArrayList而不是double []的ArrayList。 ShapeInfo可以是可以由各种类实现的接口。这样的事情将允许您为每个形状提供不同的信息参数,并为可在循环中使用的所有形状提供通用方法(getSummary)。
import java.util.ArrayList;
import java.util.List;
public class Shapes {
private static List<ShapeInfo> shapes;
public static void main(String[] args) {
shapes = new ArrayList<>();
ShapeInfo info = new CircleInfo(1, 2, 3);
shapes.add(info);
// Check what's there
for (ShapeInfo shape : shapes) {
System.out.println(shape.getSummary());
}
}
}
interface ShapeInfo {
String getSummary();
}
class CircleInfo implements ShapeInfo {
private double centreX, centreY, radius;
public CircleInfo(double centreX, double centreY, double radius) {
this.centreX = centreX;
this.centreY = centreY;
this.radius = radius;
}
@Override
public String getSummary() {
return "Centre is at (" + centreX + "," + centreY + ") and radius is " + radius;
}
}