Java PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[])
我试图在java程序中读取Path2D.Double的片段,Eclips不断告诉我: PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[]) 但是在接口PathIterator中有两种方法似乎混淆了Eclipse(或me) 我自己的代码如下所示:Java PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[]),java,eclipse,path-iterator,Java,Eclipse,Path Iterator,我试图在java程序中读取Path2D.Double的片段,Eclips不断告诉我: PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[]) 但是在接口PathIterator中有两种方法似乎混淆了Eclipse(或me) 我自己的代码如下所示: PathIterator it= ((Path2D.Double) p3d).getPathIterator(null, 2d); Double x, y; while (!it.is
PathIterator it= ((Path2D.Double) p3d).getPathIterator(null, 2d);
Double x, y;
while (!it.isDone()) {
Double coords[]= new Double[6];
System.out.println("1");
int art= it.currentSegment(coords);
System.out.println("2");
switch (art) {
case PathIterator.SEG_MOVETO:
movetoXY(coords[0], coords[1]);
x= coords[0];
y= coords[1];
break;
case PathIterator.SEG_LINETO:
linetoXY(coords[0], coords[1]);
break;
case PathIterator.SEG_CLOSE:
linetoXY(x, y);
break;
default:
System.out.println("unbekanntes Segment " + art);
break;
}
it.next();
}
符合
int art= it.currentSegment(coords);
标记为红色,工具提示上显示:
PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[])
有一个方法具有float[],另一个方法具有double[],但名称相同
我在这里遗漏了什么?Double[]和Double[]不是同一类型,因此您需要转换这些类型 Java8 Streams可以以一种语法非常清晰的方式做到这一点: 只有一件事很重要:Double是一个对象,所以Double[]可以保存空值。。。你需要检查一下
Double[] d = { 1.0, 2.0, 3.0, 4.0, 5.0, null };
double[] dArray = Arrays.stream(d).mapToDouble(x -> x == null ? 0.0 : x.doubleValue()).toArray();
System.out.println(Arrays.toString(dArray));
如果100%确定Double[]没有空值,则只需执行以下操作:
double[] dArray = Arrays.stream(d).mapToDouble(Double::doubleValue).toArray();
double!=Double
…对不起,我是在另一次阅读我自己的问题时做的。Double[]和Double[]之间存在差异。所以正确的行必须是:double coords[]=new double[6];你错过了这个:
double[] dArray = Arrays.stream(d).mapToDouble(Double::doubleValue).toArray();