查找二维数组的最大值和最小值

问题描述 投票:0回答:1

查找milesTracker 中的最大值和最小值。将最大值分配给 maxMiles,将最小值分配给 minMiles。

例如:如果输入是:

-10 20 30 40

输出为:

Min miles: -10
Max miles: 40

这就是我所拥有的。

import java.util.Scanner;

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

      for (i = 0; i < milesTracker.length; i++){
         for (j = 0; j < milesTracker[i].length; j++){
            milesTracker[i][j] = scnr.nextInt();
         }
      }
      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];
            }
            
            if (milesTracker[i][j] > minMiles){
               maxMiles = milesTracker[i][j];
            }
         }
      }

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

我只能编辑这部分:

      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];
            }
            
            if (milesTracker[i][j] > minMiles){
               maxMiles = milesTracker[i][j];
            }
         }
      }

已通过以下测试:

使用输入进行测试:-10 20 30 40

你的输出

Min miles: -10
Max miles: 40

这个是正确的^

-----

使用输入进行测试:73 0 50 12

输出不同。请参阅下面的亮点。

你的输出

Min miles: 0 
Max miles: 12

预期产量

Min miles: 0 
Max miles: 73

-----

使用输入进行测试:-5 -93 -259 -82

输出不同。请参阅下面的亮点。

你的输出

Min miles: -259 
Max miles: -82

预期产量

Min miles: -259 
Max miles: -5

我不太确定我做错了什么。我看到其他人发布了这个问题,但它对我不起作用,即使在响应中实现了代码之后也是如此。

java arrays multidimensional-array
1个回答
0
投票

在最里面的

if
循环内的第二个
for
中,您应该比较当前值是否大于您到目前为止找到的
maxMiles
的值,而不是
minMiles

所以改变这个:

if (milesTracker[i][j] > minMiles){
               maxMiles = milesTracker[i][j];

对此:

if (milesTracker[i][j] > maxMiles){
               maxMiles = milesTracker[i][j];
© www.soinside.com 2019 - 2024. All rights reserved.