我有这段代码。解释:
用户输入“ initcores”数据和“ ttime”数据(结果为“ fcores”)。
我想用从0到ttime的值填充x数组,并从initcores到fcores填充y并做散点图,x vs y。
我有一个问题:
如果我输入“ for(double t = 0; t <= fcores; t = t + fcores / 10.0){y.add(t);“ 它给了我一个阴谋,但它是错误的。 如果我把“ for(double t = initcores; t <= fcores; …”)放进去(这是正确的,因为我们从initcores开始) 它在情节中什么都没有出现。
如果我输入“ for(double t = 0; t <= fcores; t = t + fcores / 10.0){y.add(t);“
它给了我一个阴谋,但它是错误的。
如果我把“ for(double t = initcores; t <= fcores; …”)放进去(这是正确的,因为我们从initcores开始)
它在情节中什么都没有出现。
我不是在这里做某事吗?
谢谢!
......... Double initcores= getInitcores(); Double fcores= getFcores(); Double ttime=getTime(); ArrayList<Double> x =new ArrayList<Double>(); ArrayList<Double> y =new ArrayList<Double>(); //fill x,y values for (double t=0;t<=ttime;t+=ttime/10.0){ x.add(t); } for (double t=initcores;t<=fcores;t+=fcores/10.0){ y.add(t); } TimeSeries series = new TimeSeries("Number of cores"); for (int i=0;i<x.size();i++){ for (int j=0;j<y.size();j++){ series.add(i,j); } } ..........
--------------编辑----------------------------------- —
如果我使用:
double [] x = {0.0,ttime}; //time axis double [] y = {initcores,fcores}; //number of cores axis TimeSeries series = new TimeSeries("Number of cores"); for (int i=0;i<x.length;i++){ series.add(x[i],y[i]); }
它给了我一个只有2个点的图。这就是为什么我试图填充它们之间的点(对于x轴:0-ttime,对于y轴:initcores-fcores)。
您的for-loops错误。使用以下内容,您应该会很好:
for
for (int i=0;i<=10;i++){ x.add(ttime / 10.0 * i); } for (int i=0;i<=10;i++){ y.add(initcores + ((fcores - initcores) / 10 * i)); }
这些循环将为您提供11分,但您可以根据需要进行调整。
更新资料
自然,您必须使用列表中的正确值。确保两个列表的长度相同。
ArrayList<Double> x = new ArrayList<Double>(); ArrayList<Double> y = new ArrayList<Double>(); ... above code ... TimeSeries series = new TimeSeries("Number of cores"); for (int i=0;i<x.size();i++){ series.add(x.get(i),y.get(i)); }