Find Maximum and Minimum of N Integers | MinMax Program for Java

  • Thread starter Thread starter Hiche
  • Start date Start date
AI Thread Summary
The discussion focuses on creating a Java program that reads N integers from the user and computes their minimum and maximum values. A key issue raised is the initialization of the maximum and minimum variables, particularly the potential problem of setting maximum to zero, which can lead to incorrect results if all inputs are negative. A suggested solution involves initializing both maximum and minimum to the first user input during the first iteration, ensuring accurate comparisons thereafter. Additionally, a recommendation is made to use "continue;" after the first input check to avoid unnecessary comparisons. Overall, the conversation emphasizes the importance of proper initialization and logic in the MinMax program.
Hiche
Messages
82
Reaction score
0

Homework Statement



Write a program that reads a number N from the command line and asks the user to enter N integers. The program should compute their minimum and maximum, and prints them out.

Homework Equations



..

The Attempt at a Solution



Code:
public class MinMax 
{
	public static void main(String[] args)
	{
		int N = Integer.parseInt(args[0]);
		int userInput = 0;
		int maximum = 0;
		int minimum = ?;
		
		for (int i = 1; i <= N; i++)
		{
			StdOut.print("Enter integer " + i + ": ");
			userInput = StdIn.readInt();
			if (userInput > maximum)
				maximum = Math.max(maximum, userInput);
			if (userInput < minimum)
				minimum = Math.min(minimum, userInput);
		}
		StdOut.println(maximum + " " + minimum);
		
		
	}
}

The question mark is where I need help. If I input a large number, it works. But is it the only way? We are limited to using the standard input command StdIn. This is an easy question I know, but I was just looking for an alternative.
 
Physics news on Phys.org
I don't think you should initialize either minimum or maximum to constants.

There is a problem with

int maximum = 0;

if all the numbers entered by the user are negative.

Instead, the first iteration could have different behavior than the others. On the first interation, minimum and maximum are both set to the first element.
 
Code:
                for (int i = 1; i <= N; i++)
		{
			System.out.print("Enter integer " + i + ": ");
			userInput = StdIn.readInt();
			if (i == 1)
			{
				maximum = userInput;
				minimum = userInput;
			}
			if (userInput > maximum)
				maximum = Math.max(maximum, userInput);
			if (userInput < minimum)
				minimum = Math.min(minimum, userInput);
		}

Something like this? I'm guessing there is a better way.
 
Yes, that should be okay, although it might be better to put "continue;" at the end of that first if block, since there is no need for comparisons on the first iteration.
 

Similar threads

Replies
7
Views
2K
Replies
3
Views
8K
Replies
7
Views
3K
Replies
12
Views
2K
Replies
1
Views
2K
Replies
1
Views
2K
Back
Top