Search code examples
javaarraysmax

Java program to find max value in an array is printing multiple values


For some reason this code is printing three values for the highest value in the array when I'm trying to print just one (which is 11.3). Can someone please explain to me why it is doing this?

import java.util.Scanner;

public class Slide24
{
    public static void main (String [] args)
    {
        Scanner in = new Scanner(System.in);
        
        double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
            8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
            3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};
        
        double total = 0, avgMax = 0;
        
        for (int counter = 0; counter < decMax.length; counter++)
        {
         total += decMax[counter];
        }
        
        avgMax = total / decMax.length;
                
        System.out.printf("%s %2.2f\n", "The average maximum temperature for December was: ", avgMax);
        
        //finds the highest value
        double max = decMax[0];
        
        for (int counter = 1; counter < decMax.length; counter++)
        {
         if (decMax[counter] > max)
         {
          max = decMax[counter];
          System.out.println("The highest maximum for the December is: " + max);
         }
         
        }        
    }
}

Solution

  • It's printing out a number every time it finds one that is higher than the current max (which happens to occur three times in your case.) Move the print outside of the for loop and you should be good.

    for (int counter = 1; counter < decMax.length; counter++)
    {
         if (decMax[counter] > max)
         {
               max = decMax[counter];
         }
    }
    
    System.out.println("The highest maximum for the December is: " + max);