2016-03-18 2 views
0

Im пытается найти минимальное и максимальное значение в этом 2d массиве. Я получаю правильный вывод, (-10 как мин, 40 как максимум), но я не могу пройти второй тест, который есть {73,0} Любые идеи?Java 2d array using if else

public class ArraysKeyValue { 
    public static void main (String [] args) { 
    final int NUM_ROWS = 2; 
    final int NUM_COLS = 2; 
    int [][] milesTracker = new int[NUM_ROWS][NUM_COLS]; 
    int i = 0;   
    int j = 0; 
    int maxMiles = 0; // Assign with first element in milesTracker before loop 
    int minMiles = 0; // Assign with first element in milesTracker before loop 

    milesTracker[0][0] = -10; 
    milesTracker[0][1] = 20; 
    milesTracker[1][0] = 30; 
    milesTracker[1][1] = 40; 

    maxMiles = milesTracker[1][1]; 
    minMiles = milesTracker[0][0]; 

    for (i = 0; i < NUM_ROWS; i++) { 
     for (j = 0; j < NUM_COLS; j++) { 
      if (i == 0 && j == 0) { 
       minMiles = milesTracker[i][j]; 
       maxMiles = milesTracker[i][j]; 
      } 
     if (milesTracker[i][j] > maxMiles){ 
        maxMiles = milesTracker[i][j]; 
      } 
     } 
    } 

    System.out.println("Min miles: " + minMiles); 
    System.out.println("Max miles: " + maxMiles); 

}}

ответ

1

пожалуйста, обновить свой код соответственно,

..... 

for (j = 0; j < NUM_COLS; j++) { 
      if (i == 0 && j == 0) { 
       minMiles = milesTracker[i][j]; 
       maxMiles = milesTracker[i][j]; 
      } 
     if (milesTracker[i][j] > maxMiles){ 
        maxMiles = milesTracker[i][j]; 
      }else if(milesTracker[i][j] < minMiles){ 
        minMiles = milesTracker[i][j]; 
      } 

     } 

..... 
+2

Вы не хотите 'еще if'. В некоторых случаях он не устанавливал 'minMiles'. – radoh

+0

@radoh может я знаю, в каком случае? –

+0

Фактически, если установлено minMiles = maxMiles = milesTracker [0] [0], это может быть даже более быстрое решение (значение может быть меньше, чем 'minMiles', когда оно также меньше, чем' maxMiles'). – ctst

2

Кажется, вы забыли настроить minMiles соответственно. Добавить еще if

if (milesTracker[i][j] < minMiles){ 
     minMiles = milesTracker[i][j]; 
} 
0

если чистый код:

minMiles = maxMiles = milesTracker[0][0]; //init min and max as index = 0 
for (i = 1; i < NUM_ROWS; i++) { //start from index = 1 
    for (j = 1; j < NUM_COLS; j++) { 
     if (milesTracker[i][j] > maxMiles) { 
      maxMiles = milesTracker[i][j]; 
     } 
     else if (milesTracker[i][j] < minMiles) { 
      minMiles = milesTracker[i][j]; 
     } 
    } 
}