как заполнить список массивов между 2 точками? - PullRequest
0 голосов
/ 21 января 2012

У меня есть этот кусок кода.Для объяснения:

Пользователь вводит данные "initcores" и данные "ttime" (результат "fcores").

Я хочу заполнить массив x значениями от 0 до ttime и y от initcores до fcores и выполнить разброс, x vs y.

У меня есть одна проблема:

Если я поставлю "for (double t = 0; t <= fcores; t = t + fcores / 10.0) {y.add (t); "</p>

это дает мне сюжет, но это неправильно.

если я поставлю "for (double t = initcores; t <= fcores; ..." (что правильно, потому что мы начинаем с initcores) </p>

это ничего не появляется всюжет.

Разве я не занимаюсь этим прямо здесь?

Спасибо!

 ......... 
         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).

1 Ответ

2 голосов
/ 26 января 2012

Вы неправильно поняли 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));
}
...