0

我有这段代码。解释:

用户输入“initcores”数据和“ttime”数据(“fcores”是结果)。

我想用从 0 到 ttime 的值和从 initcores 到 fcores 的 y 填充 x 数组,并绘制散点图 x vs y。

我有一个问题:

如果我把“ 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)。

4

1 回答 1

2

你的for-loops 错了。使用以下这些,你应该没问题:

 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));
}
于 2012-01-26T09:35:50.760 回答