Search code examples
javaarraysselection-sort

Runtime error in java about selection sort


I have learnt selection sort, and i try to code it with java. But it has an error, i think it a runtime error. I don't know what to fix in my code.

This is the code:

import java.util.Scanner;

public class Main {

    public static void main(String args[])
    {

        int temp;

        Scanner sc=new Scanner(System.in);
        int number;
        int input=sc.nextInt();
        int [] carriage;
        carriage=new int[input];
        for(int i=0;i<input;i++)
        {
            number=sc.nextInt();
            carriage[i]=number;


        }
        int n=carriage.length;
        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;i<n;j++)
            {
                if(carriage[j]<carriage[i])
                {
                    temp=carriage[i];
                    carriage[i]=carriage[j];
                    carriage[j]=temp;
                }

            }
            System.out.println(carriage[i]+ " ");
        }
        sc.close();
    }
}

Solution

  • I think you want to sort the number of integer provided by user. Your code is having 2 errors. One in the for loop starting with i, the condition should be i

    public class Main {
    
        public static void main(String args[]) {
    
            int temp;
    
            Scanner sc = new Scanner(System.in);
            int number;
            System.out.println("Enter the number of integers to be sorted - ");
            int input = sc.nextInt();
            int[] carriage;
            carriage = new int[input];
            for (int i = 0; i < input; i++) {
                System.out.println("Enter the "+ i+1 +"number  - ");
                number = sc.nextInt();
                carriage[i] = number;
            }
            int n = carriage.length;
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    if (carriage[j] < carriage[i]) {
                        temp = carriage[i];
                        carriage[i] = carriage[j];
                        carriage[j] = temp;
                    }
    
                }
                System.out.println(carriage[i] + " ");
            }
            sc.close();
        }
    }