2016-06-06 5 views
2

Не могу понять, почему на последней итерации 12 заменяется 14. Если условия имеют большой массив макс. Тока, то вместо этого заменяется еще один макс.for loop - in last Iteration, условия не работали должным образом

Возможное объяснение пожалуйста?

Этот процесс делает текущий цикл:

max: 1 min: 1 
max: 3 min: 1 
max: 9 min: 1 
max: 10 min: 1 
max: 12 min: 1 
max: 14 min: 1 
max: 12 min: 1 

петля:

int result=0; 
    int arr[] = { 1, 3, 9,10,12,14,12 }; 

    for (int i = 0; i < arr.length; i++) { 
     int max=arr[0]; 
     int min=arr[0]; 
     if(arr[i]>max){ 
      max=arr[i]; 

    } 
     else if(arr[i]<min){ 
      min=arr[i]; 

     } 
       System.out.println("max: " + max + " min: "+min); 

    } 

ответ

5

Инициализация max и min

int max=arr[0]; 
    int min=arr[0]; 

должно быть до цикла. В противном случае вы переписываете эти переменные на каждой итерации цикла.

int max=arr[0]; 
int min=arr[0]; 
for (int i = 0; i < arr.length; i++) { 
    if(arr[i]>max){ 
     max=arr[i]; 
    } else if (arr[i]<min) { 
     min=arr[i]; 
    } 
    System.out.println("max: " + max + " min: "+min); 
} 

Этот код предполагает, что массив не пуст.

+0

спасибо, что работа хорошая – liran

Смежные вопросы