Search code examples
javaarrayselement

How to find the smallest element in an user inputted array? Why the smallest element is displayed zero?


The code displays the sum, average, and largest element. It doesn't display the smallest element as the output is always zero. How do I display the smallest element in the array?

import java.util.Scanner;
public class Average {

    public static void main (String[] args) {
        
        Scanner input = new Scanner(System.in);
        
        System.out.println("Enter the number of elements:");
        int length = input.nextInt();
        
        int[] num = new int[length];
        System.out.println("Enter the "+ length +  " array elements:");
        int sum = 0;
         int large,small;
         large =small = num[0]; 
         
         for (int i=0; i<length;i++) {
            num[i] = input.nextInt();
            sum = sum+ num[i];
              }
         
        for (int i=0; i<length; ++i) {
            if (num[i]<small) {
                 small = num[i];
            }
              
             if(num[i]> large) {
                 large = num[i];
            }
             }
        
        double avg = sum/length;
        System.out.println("The sum is "+ sum);
        System.out.println("The average is "+ avg);
        System.out.println("The smallest element is "+ small);
        System.out.println("The largest element is "+ large);
        }
}

Solution

  • import java.util.Scanner;
    
    class Average {
        public static void main(String[] args) {
    
            Scanner input = new Scanner(System.in);
    
            System.out.println("Enter the number of elements:");
            int length = input.nextInt();
    
            int[] num = new int[length];
            System.out.println("Enter the " + length + " array elements:");
            int sum = 0;
            int large, small;
    
            for (int i = 0; i < length; i++) {
                num[i] = input.nextInt();
                sum = sum + num[i];
            }
    
            large = small = num[0]; // small should be assigned after num is input
            
            for (int i = 0; i < length; ++i) {
                if (num[i] < small) {
                    small = num[i];
                }
    
                if (num[i] > large) {
                    large = num[i];
                }
            }
    
            double avg = sum / length;
            System.out.println("The sum is " + sum);
            System.out.println("The average is " + avg);
            System.out.println("The smallest element is " + small);
            System.out.println("The largest element is " + large);
    
        }
    }