2015-06-09 69 views
0

我是新來的Java,我試圖用數組中的int元素來格式化一個方程(我不斷收到錯誤「不是一個語句」)。這是代碼的比特:格式化等式?

int n = 0; 
    int[] time = {mins, mins2, mins3, mins4, mins5}; 
    for(int j = 0; j <= 3; j++){ 
     if (time[j] < time[j+1]){ 
      n = time[j]; 
     } 
    } 
    for(int k = 0; k <= 4; k++){ 
     time[k] - n; 
    } 

我發現最小的INT(所有元素都是從一個隨機數發生器),現在我想從每個元素中減去所述最小和永久地改變給定陣列的元件到那些較小的數字。我不知道如何格式化「time [k] - n;」段正確。

謝謝你的幫助。

+0

那麼,你減去'時間[K] - N',但應該做的結果? – Seelenvirtuose

回答

2

行:

time[k] - n 

是否什麼。它取值time[k]並從中減去值n。然後丟棄結果。

你需要的是從變量減去n和結果分配回同一個變量

time[k] = time[k] - n 

在Java中,這相當於一個compound assignment operator

time[k] -= n 

如果你有Java 8,你實際上可以這樣做:

int[] time = {mins, mins2, mins3, mins4, mins5}; 
int min = IntStream.of(time).min().getAsInt(); 
int[] normalised = IntStream.of(time).map(i -> i - min).toArray(); 

甚至與早期版本的Java,我建議:

int[] time = {mins, mins2, mins3, mins4, mins5}; 
int n = Integer.MAX_VALUE; 
for (int t : time) { 
    n = Math.min(n, t); 
} 
for (int i = 0; i < time.length; ++i) { 
    time[i] -= n; 
} 

即使用foreach loop在這裏你可以和以其它方式使用數組的length屬性,而不是硬編碼的長度。

+0

解決了!謝謝。我甚至沒有考慮過預先添加「time [k] =」(對於這個感覺有點愚蠢)。非常感謝快速響應。編譯並完美工作。再次感謝。 – Ray25Lee

0

變化time[k] - n;變爲time[k] =- n;。所以它會存儲time[k] - ntime[k]