2014-02-20 71 views
0

想在這裏回顧的方法如何調用n次的方法?

這裏是我的主要方法(以便它使用for循環產生不同的結果,100次):

for (int i = 0; i<99; i++) { 
      double scaleFitness = ScalesSolution.ScalesFitness(randomNumberFile); 
      System.out.print(scaleFitness + ", "); 
     } 

,這是我的方法m試圖呼叫100次(在ScalesSolution類中):

public static double ScalesFitness(ArrayList<Double> weights) 
    { 
     int n = scasol.length(); 
     double lhs = 0.0, rhs = 0.0; 
     if (n > weights.size()) return(-1); 

     for(int i = 0; i < n; i++){ 
      if(scasol.charAt(i) == '0'){ 
       lhs += weights.get(i); 
      } 
      else if (scasol.charAt(i) == '1') { 
       rhs += weights.get(i); 
      } 
     } 
     return(Math.abs(lhs-rhs)); 
    } 

但是,這會打印出相同的值100次。

+5

但是你是不是每次都傳遞相同的價值?你應該每次都得到相同的迴應。 –

+2

它確實看起來像'ScalesFitness'_ought_傳遞相同的輸入時返回相同的值。 –

+2

順便說一句,對於100打印,你需要「我<100」而不是「我<99」。 –

回答

3

你的方法 「ScaleFitness」 這種方法的輸出取決於兩個變量:

  1. scasol

看來這些變量留相同整個程序的運行。所以你的產量是相同的,這並不奇怪。

如果你想爲你的循環的每次運行輸出不同的輸出。您需要將這些變量中的至少一個重置爲新值。

Btw。 Java中的方法始終以小寫字母開頭。類以大寫字母開頭。

+0

我明白你在說什麼,但是如果我重新運行整個程序,ScalesFitness方法會產生與前一個不同的結果。 – Adz

+1

當然。因爲這些值是用新值設置的,我猜測它們是以隨機方式設置的。 如果您可以發佈代碼,在設置這些值的位置,我們可以驗證該假設。 – elToro

+0

謝謝,我現在修好了! – Adz

0
public static double scalesFitness(ArrayList<Double> weights) 
{ 
    double randomElement = weights[((int) (Math.random() * weights.size()))]; 

這將使您能夠檢索數組中的隨機元素,稍後進行操作。