简体   繁体   中英

Java program won't print out the smallest number in an array

I'm trying to find the largest and smallest number in my array however, it only seems to print out the largest and not the smallest, I'm fairly new so all help is appreciated, thank you.

import java.util.Scanner;

public class Ex1 {

    public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);
        int[] numbers = new int[11];

        int largest = numbers[0];
        int smallest = numbers[0];

        System.out.println("Enter 10 numbers = ");

        for (int i = 1; i < numbers.length; i++) {
            numbers[i] = keyboard.nextInt();
            System.out.println("Number " + i + " = " + numbers[i]);

        for (int y = 1; y < numbers.length; y++) {
            if (numbers[y] > largest)
            {
                largest = numbers[y];
            }
        }

        for (int x = 1; x < numbers.length; x++)    
        {
            if (numbers[x] < smallest)
            {
                smallest = numbers[x];
            }
        }   

        }

            System.out.println("Largest number = " + largest);
            System.out.println("Smallest number = " + smallest);




    } // main

} // class

It doesn't print out the smallest number because you set it in the beginning to 0, set it to Integer.MAX_VALUE instead.

Also to make sure your program works for negative numbers, set the value of largest to Integer.MIN_VALUE .

 int smallest = numbers[0];

This is creating problem. This assigns value 0 in the beginning hence you are not getting smallest number.

Also your test dataset must be containing only positive numbers .

Solution

   int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;

There are some code issues other than correctly finding min and max of input numbers.

You don't have to write nested for loops for this. Check below code and that will simply find you min and max numbers,

    Scanner keyboard = new Scanner(System.in);
    int[] numbers = new int[11];

    int largest = numbers[0];
    int smallest = numbers[0];

    System.out.println("Enter 10 numbers = ");

    for (int i = 1; i < numbers.length; i++) {
        numbers[i] = keyboard.nextInt();
        System.out.println("Number " + i + " = " + numbers[i]);
        if (i == 1) {
            largest = numbers[i];
            smallest = numbers[i];
        }
        if (numbers[i] > largest) {
            largest = numbers[i];
        }
        if (numbers[i] < smallest) {
            smallest = numbers[i];
        }

    }

    System.out.println("Largest number = " + largest);
    System.out.println("Smallest number = " + smallest);

try this,

    public static void main(String[] args) {
            Scanner keyboard = new Scanner(System.in);
             int[] numbers = new int[10];

                System.out.println("Enter 10 numbers = ");

                for (int i = 0; i < numbers.length; i++) {
                    numbers[i] = keyboard.nextInt();
                    System.out.println("Number " + (i + 1) + " = " + numbers[i]);
                }
                int largest = numbers[0];
                int smallest = numbers[0];

                for (int y = 0; y < numbers.length; y++) {
                    if (numbers[y] >= largest)
                    {
                        largest = numbers[y];
                    }

                    if (numbers[y] <= smallest)
                    {
                        smallest = numbers[y];
                    }
                }
                    System.out.println("Largest number = " + largest);
                    System.out.println("Smallest number = " + smallest);
   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM