2015-06-09 1 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

Это решило! Благодарю. Я даже не думал о том, чтобы добавить «время [k] =» заранее (для вас это показалось глупым). Быстрый ответ очень ценится. Компилирует и отлично работает. Еще раз спасибо. – Ray25Lee

0

Изменить time[k] - n;time[k] =- n;. Поэтому он будет хранить time[k] - n в time[k]