Advertisement
brilliant_moves

ThirdSmallestNumber.java

Jun 3rd, 2014
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.61 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.util.Arrays;
  3.  
  4. /**
  5. *   Program:    ThirdSmallestNumber.java
  6. *   Purpose:    Display 3rd smallest number in an array
  7. *   Creator:    Chris Clarke, author "50 Java Program Source Codes"
  8. *   Created:    04.06.2014
  9. */
  10.  
  11. public class ThirdSmallestNumber {
  12.  
  13.     static final int MAX = 10;
  14.  
  15.     static int[] k = new int[MAX];
  16.  
  17.     public static void main(String[] args) {
  18.  
  19.         // create scanner object to read user input by keyboard
  20.         Scanner in = new Scanner(System.in);
  21.  
  22.         // prompt for user input
  23.         System.out.println("Enter 10 numbers:");
  24.  
  25.         // loop MAX times
  26.         for( int i =0; i<MAX; i++) {
  27.             // get user input
  28.             k[i] = in.nextInt();
  29.         } // end for
  30.  
  31.         // display result
  32.         System.out.println("The 3rd smallest number is: "+getThirdSmallest( k));
  33.     } // end main()
  34.  
  35.  
  36.     // find 3rd smallest number in array
  37.     public static int getThirdSmallest(int[] k) {
  38.      // works with or without repeated numbers
  39.      // e.g. k = {1, 1, 1, 2, 2, 3, ...} returns 3, not 1
  40.  
  41.         // sort array in ascending numerical order
  42.         Arrays.sort(k);
  43.  
  44.         // display sorted array
  45.         //System.out.println( Arrays.toString( k));
  46.  
  47.         // k[0] is smallest
  48.         int i=0;
  49.  
  50.         // find second- & third- smallest numbers
  51.         // (not as simple as returning k[2] - see example above)
  52.  
  53.         // loop twice
  54.         for (int j=2; j<=3; j++) {
  55.             // iterate through any repeated numbers
  56.             while (i<k.length-1 && k[i] == k[i+1]) i++;
  57.  
  58.             // move on to next different index, if it exists
  59.             if (i<k.length-1) i++;
  60.         } // end for j
  61.  
  62.         // returns number at position i of array k
  63.         return k[i];
  64.  
  65.     } // end getThirdSmallest()
  66.  
  67. } // end class ThirdSmallestNumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement