2016-11-02 12 views
-1

このプログラムを使用して、変数mileTrackerの最小値と最大値を検索しましたが、いくつかのテストで成功しましたが、値{{-5}、{ - 93}、{-259}}。Java:2D配列の最小値と最大値

注:注釈付き領域外のものは編集できませんが、注釈付き領域内のどこにでも行を追加できます。

私は助けていただきありがとうございます。

マイコード:

import java.util.Scanner; 

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; 

     // Start of area to be modified 
     for(i=0;i<NUM_ROWS;++i){ 
     for(j=0;j<NUM_COLS;++j){ 
      if (milesTracker[i][j]<minMiles){ 
       minMiles = milesTracker[i][j]; 
      } 
      else if (milesTracker[i][j] > maxMiles){ 
       maxMiles = milesTracker[i][j]; 
      } 
     } 
     } 
     // End of area to be modified 

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

エラー:

Errors and Stuff

+0

'else if(milesTracker [i] [j]> maxMiles)の代わりにelseを削除してみてください。{' try 'if(milesTracker [i] [j]> maxMiles){' –

+0

初期化しないでください'int minMiles = 0'です。 'int minMiles = Integer.MAX_VALUE'を試してください。 – bradimus

+0

@bradimus MaxValueでなくてはならないと思います –

答えて

1
maxMiles = milesTracker[0][0]; 

    minMiles = milesTracker[0][0]; 

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

OPは指定された領域以外の彼のコメントに最大と最小の覚悟の初期値を編集できません –

+0

これはあなたの問題を解決すると思います。 – Rumado

+0

@ManuelMejiasは、forループが終了するまでminMilesを終了し、maxMilesは一時的な値を取ります。彼らじゃない? – Rumado

0

あなたは初期化、

int maxMiles = 0; 

しかし、あなただけのmaxMilesを更新し、

if(milesTracker[i][j] > maxMiles) 

{{-5},{-93},{-253}}であなたのアレイを反復しながら、これらの値はいずれもmaxMiles == 0より大きいません。したがって、maxMilesは更新されません。

int maxMiles = milesTracker[0][0]; 

はその後maxMilesがセットの外にすることはできませんセット内で任意にそれを宣言してください。

関連する問題