Java:2D数组的最小值和最大值

时间:2016-11-02 16:31:49

标签: java if-statement for-loop multidimensional-array

我正在研究这个程序来查找变量里程数的最小值和最大值,并且已经成功进行了一些测试,但是它使用值{{-5},{ - 93},{-259}}进行了测试

注意:我无法编辑注释区域之外的任何内容,但是,我可以在注释区域内的任何位置添加更多行。

我很感激帮助。

我的代码:

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

2 个答案:

答案 0 :(得分: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 :(得分:0)

你初始化,

int maxMiles = 0;

但您只更新了maxMiles

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

在使用{{-5},{-93},{-253}}迭代数组时,这些值都不会大于maxMiles == 0。因此maxMiles永远不会更新。

尝试在集合

中任意声明
int maxMiles = milesTracker[0][0];

然后maxMiles不能超出集合范围。