C:\Users\notebook\Documents\NetBeansProjects\CS2\src\review\NumberClassification.java
  1 /*
  2  * Program to generate 25 3-digit random numbers and then print, in turn:
  3  * 1. all of the numbers
  4  * 2. just the odd numbers
  5  * 3. just those numbers which are strictly monotonic with respect to digits
  6  * 4. just those numbers which contains exactly 2 distinct digits
  7  * 5. the numbers grouped according to the sum of their digits from low to high
  8  */
  9 package review;
 10 
 11 import java.util.ArrayList;
 12 import java.util.List;
 13 import java.util.Random;
 14 import java.util.Scanner;
 15 
 16 /**
 17  *
 18  * @author notebook
 19  */
 20 public class NumberClassification {
 21 
 22     /**
 23      * @param args the command line arguments
 24      */
 25     public static void main(String[] args) {
 26         System.out.println("The numbers ...");
 27         Random random = new Random();
 28         ArrayList<Integer[]> numbers = new ArrayList<>();
 29         int x = 1;
 30         while (x <= 25) {
 31             int rgen = random.nextInt(999);
 32             if (rgen >= 100) {
 33                 System.out.print(rgen + " ");
 34                 String numberToString = String.valueOf(rgen);
 35                 String numberArray[] = numberToString.split("");
 36                 Integer digits[] = new Integer[3];
 37                 digits[0] = Integer.parseInt(numberArray[0]);
 38                 digits[1] = Integer.parseInt(numberArray[1]);
 39                 digits[2] = Integer.parseInt(numberArray[2]);
 40                 numbers.add(digits);
 41                 x++;
 42             }
 43         }
 44         theOddNumbers(numbers);
 45         theMonotonicNumbers(numbers);
 46         twoDistinctDigits(numbers);
 47         sortNumbers(numbers);
 48     }
 49 
 50     private static void theOddNumbers(ArrayList<Integer[]> numbers) {
 51         System.out.println("\nThe odd numbers ...");
 52         for (int x = 0; x < numbers.size(); x = x + 1) {
 53             if (odd(numbers.get(x)[2])) {
 54                 System.out.print(numbers.get(x)[0] + "" + numbers.get(x)[1] + "" + numbers.get(x)[2] + " ");
 55             }
 56         }
 57     }
 58 
 59     private static void theMonotonicNumbers(ArrayList<Integer[]> numbers) {
 60         System.out.println("\nThe strictly monotonic numbers ...");
 61         for (int x = 0; x < numbers.size(); x = x + 1) {
 62             if (monotonic(numbers.get(x))) {
 63                 System.out.print(numbers.get(x)[0] + "" + numbers.get(x)[1] + "" + numbers.get(x)[2] + " ");
 64             }
 65         }
 66     }
 67 
 68     private static void twoDistinctDigits(ArrayList<Integer[]> numbers) {
 69         System.out.println("\nThe pairs ...");
 70         for (int x = 0; x < numbers.size(); x = x + 1) {
 71             if (pair(numbers.get(x))) {
 72                 System.out.print(numbers.get(x)[0] + "" + numbers.get(x)[1] + "" + numbers.get(x)[2] + " ");
 73             }
 74         }
 75     }
 76 
 77     private static void sortNumbers(ArrayList<Integer[]> numbers) {
 78         System.out.println("\nThe numbers by digit Sum ...");
 79         for (int a = 0; a < numbers.size(); a = a + 1) {
 80             for (int x = a + 1; x < numbers.size(); x = x + 1) { 
 81                 if ((numbers.get(a)[0] + numbers.get(a)[1] + numbers.get(a)[2]) > (numbers.get(x)[0] + numbers.get(x)[1] + numbers.get(x)[2])) {
 82                     Integer[] temp = numbers.get(a);
 83                     numbers.set(numbers.indexOf(temp), numbers.get(x));
 84                     numbers.set(x, temp);
 85                 }
 86             }
 87         }
 88         System.out.print("{ ");
 89         for (int x = 0; x < numbers.size()-1; x = x + 1) {
 90             if ((numbers.get(x)[0] + numbers.get(x)[1] + numbers.get(x)[2]) == (numbers.get(x+1)[0] + numbers.get(x+1)[1] + numbers.get(x+1)[2])) {
 91                 System.out.print(numbers.get(x)[0] + "" + numbers.get(x)[1] + "" + numbers.get(x)[2] + " ");
 92             } else {
 93                 System.out.println(numbers.get(x)[0] + "" + numbers.get(x)[1] + "" + numbers.get(x)[2] + " }");
 94                 System.out.print("{ ");
 95             }
 96         }
 97         System.out.println(numbers.get(numbers.size()-1)[0] + "" + numbers.get(numbers.size()-1)[1] + "" + numbers.get(numbers.size()-1)[2] + " }");
 98     }
 99 
100     private static boolean odd(Integer x) {
101         return (x % 2 == 1);
102     }
103 
104     private static boolean monotonic(Integer[] x) {
105         return (x[0] < x[1]) && (x[1] < x[2]) || (x[2] < x[1]) && (x[1] < x[0]);
106     }
107 
108     private static boolean pair(Integer[] x) {
109         return (x[0] == x[1]) && (x[0] != x[2]) || (x[1] == x[2]) && (x[0] != x[2]) || (x[0] == x[2]) && (x[1] != x[2]);
110     }
111 
112 }
113