title: Selection Sort using ArrayList
body: <p>I'm trying to code a selection sort using ArrayList. My program requires me to create an array of size 20 and populate it with random integers between 1 and 1000 (no user input or hard code). The output will require displaying the original unsorted list of integers, and displaying each pass of the sorting algorithm on a separate line.</p>
  
  <p>I tried creating a method for the selection sort, so that's where I'm stuck because I'm not sure how to implement the code into my main method.</p>
  
  <p>An example of how I want my output to come out as is shown below (although it only shows 5 integers when I'm trying to do 20):<br></p>
  
  <p><strong><em>Unsorted list: 3 68 298 290 1<br>
      Pass 1: 1 68 298 290 3<br>
      Pass 2: 1 3 298 290 68<br>
      Pass 3: 1 3 68 290 298<br>
      Pass 4: 1 3 68 290 298<br></em></strong></p>
  
  <pre><code>// Used to capture keyboard input
  import java.util.*;
  
  // Our class called SelectionSort
  public class SelectionSort {
  
  // Create doSelectionSort method 
  public static int[] doSelectionSort(int[] arr) {
      for (int i = 0; i &lt; arr.length - 1; i++) {
          int pos = i;
          // find position of smallest num between (i + 1)th element and last element
          for (int j = i + 1; j &lt;= arr.length; j++) {
              if (arr[j] &lt; arr[pos])
                  pos = j;
  
              // Swap min (smallest num) to current position on array
              int min = arr[pos];
              arr[pos] = arr[i];
              arr[i] = min;
          }
      }
      return arr;
  }
  
  // Main method
  public static void main(String[] args) {
      ArrayList&lt;Integer&gt; array = new ArrayList&lt;Integer&gt;(); // Declare and instantiate a new ArrayList object
      Scanner userChoice = new Scanner(System.in); // User input for quitting program
      String choice = ""; // Will hold user choice to quit program
      boolean inputFlag = false; // True if input is valid, false otherwise
  
      // Repeat program until user chooses to quit
      while (inputFlag = true) {
          System.out.print("\nWould you like to continue the program? (Y/N): ");
          choice = userChoice.nextLine();
          if (choice.equalsIgnoreCase("Y")) {
              try {
                  /* Create an array of size 20 and populate it with random integers between 1 and 1000.
                  Do not ask user for the numbers and do not hard code them */
                  for (int i = 0; i &lt; 20; i++) {
                      int integer = (int)(1000.0 * Math.random());
                      array.add(integer);
                  }
                  System.out.print("\nUNSORTED LIST: ");
  
                  //Display the 20 size of the unsorted ArrayList 
                  for (int i = 0; i &lt; array.size() - 1; i++) {
                      System.out.print(array.get(i) + ", ");
                  }
                  // Shows very last integer with a period
                  System.out.print(array.get(array.size() - 1) + "."); 
                  System.out.println();
              }
  
              catch (IndexOutOfBoundsException e) {
                  System.out.println("\nThere is an out of bounds error in the ArrayList.");
              }
              // Display each pass of the sorting algorithm on a separate line
              for (int i = 1; i &lt; array.size(); i++) {
                  System.out.print("PASS " + i + ": ");
                  for (int arr2:array) {
                      System.out.print(arr2 + ", ");
                  }
                  System.out.print(array.get(array.size() - 1) + ".\n");
              }
          array.clear();
          }
          else if (choice.equalsIgnoreCase("N")) {
              break;
          }
          // Error message when inputting anything other than Y/N
          else { 
              System.out.println("\nERROR. Only Y, y, N, or n may be inputted.");
              System.out.println("Please try again.");
          }
      }
  }
  }
  </code></pre>
  
  <p>I'm also having trouble removing the last number from each passing because it's being displayed twice.. have any idea what I should do?</p>
  
  <p>Sorry for the noob-ness of my coding, I'm still trying to understand it.</p>