Advertisement
tripTiPscout

Array Manipulator

May 23rd, 2022
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.91 KB | None | 0 0
  1. package Fundamentals;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class ArrayManipulator {
  7.  
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         int[] numbers = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
  12.  
  13.         String input = scanner.nextLine();
  14.  
  15.         while (!input.equals("end")) {
  16.             String[] command = input.split(" ");
  17.             switch (command[0]) {
  18.                 case "exchange":
  19.                     numbers = getExchangedArray(numbers, Integer.parseInt(command[1]));
  20.                     break;
  21.                 case "max":
  22.                     if (command[1].equals("even")) {
  23.                         printMaxEvenIndex(numbers);
  24.                     } else if (command[1].equals("odd")) {
  25.                         printMaxOddIndex(numbers);
  26.                     }
  27.                     break;
  28.                 case "min":
  29.                     if (command[1].equals("even")) {
  30.                         printMinEvenIndex(numbers);
  31.                     } else if (command[1].equals("odd")) {
  32.                         printMinOddIndex(numbers);
  33.                     }
  34.                     break;
  35.                 case "first":
  36.                     int countFirst = Integer.parseInt(command[1]);
  37.                     if (command[2].equals("even")) {
  38.                         printFirstEvenElements(numbers, countFirst);
  39.                     } else if (command[2].equals("odd")) {
  40.                         printFirstOddElements(numbers, countFirst);
  41.                     }
  42.                     break;
  43.                 case "last":
  44.                     int countLast = Integer.parseInt(command[1]);
  45.                     if (command[2].equals("even")) {
  46.                         printLastEvenElements(numbers, countLast);
  47.                     } else if (command[2].equals("odd")) {
  48.                         printLastOddElements(numbers, countLast);
  49.                     }
  50.                     break;
  51.             }
  52.             input = scanner.nextLine();
  53.         }
  54.         System.out.println(Arrays.toString(numbers));
  55.     }
  56.  
  57.     private static int[] getExchangedArray(int[] numbers, int index) {
  58.         int[] exchangedArray = new int[numbers.length];
  59.         int counter = 0;
  60.         if (index < 0 || index >= numbers.length) {
  61.             System.out.println("Invalid index");
  62.         } else {
  63.             for (int i = index + 1; i < numbers.length ; i++) {
  64.                 exchangedArray[counter++] = numbers[i];
  65.             }
  66.             for (int i = 0; i <= index ; i++) {
  67.                 exchangedArray[counter++] = numbers[i];
  68.             }
  69.             numbers = exchangedArray;
  70.         }
  71.         return numbers;
  72.     }
  73.  
  74.     private static void printMaxEvenIndex(int[] numbers) {
  75.         int maxEven = Integer.MIN_VALUE;
  76.         int currentIndex = -1;
  77.         for (int i = 0; i < numbers.length ; i++) {
  78.             if (numbers[i] % 2 == 0 && numbers[i] >= maxEven) {
  79.                 maxEven = numbers[i];
  80.                 currentIndex = i;
  81.             }
  82.         }
  83.         if (currentIndex == -1) {
  84.             System.out.println("No matches");
  85.         } else {
  86.             System.out.println(currentIndex);
  87.         }
  88.     }
  89.  
  90.     private static void printMaxOddIndex(int[] numbers) {
  91.         int maxOdd = Integer.MIN_VALUE;
  92.         int currentIndex = -1;
  93.         for (int i = 0; i < numbers.length ; i++) {
  94.             if (numbers[i] % 2 != 0 && numbers[i] >= maxOdd) {
  95.                 maxOdd = numbers[i];
  96.                 currentIndex = i;
  97.             }
  98.         }
  99.         if (currentIndex == -1) {
  100.             System.out.println("No matches");
  101.         } else {
  102.             System.out.println(currentIndex);
  103.         }
  104.     }
  105.  
  106.     private static void printMinEvenIndex(int[] numbers) {
  107.         int minEven = Integer.MAX_VALUE;
  108.         int currentIndex = -1;
  109.         for (int i = 0; i < numbers.length ; i++) {
  110.             if (numbers[i] % 2 == 0 && numbers[i] <= minEven) {
  111.                 minEven = numbers[i];
  112.                 currentIndex = i;
  113.             }
  114.         }
  115.         if (currentIndex == -1) {
  116.             System.out.println("No matches");
  117.         } else {
  118.             System.out.println(currentIndex);
  119.         }
  120.     }
  121.  
  122.     private static void printMinOddIndex(int[] numbers) {
  123.         int minOdd = Integer.MAX_VALUE;
  124.         int currentIndex = -1;
  125.         for (int i = 0; i < numbers.length ; i++) {
  126.             if (numbers[i] % 2 != 0 && numbers[i] <= minOdd) {
  127.                 minOdd = numbers[i];
  128.                 currentIndex = i;
  129.             }
  130.         }
  131.         if (currentIndex == -1) {
  132.             System.out.println("No matches");
  133.         } else {
  134.             System.out.println(currentIndex);
  135.         }
  136.     }
  137.  
  138.     private static void printFirstEvenElements(int[] numbers, int count) {
  139.         if (count < 0 || count > numbers.length) {
  140.             System.out.println("Invalid count");
  141.             return;
  142.         }
  143.  
  144.         int index = 0;
  145.         int[] result = new int[numbers.length];
  146.  
  147.         for (int i = 0; i < numbers.length ; i++) {
  148.  
  149.             if (numbers[i] % 2 == 0) {
  150.                 result[index++] = numbers[i];
  151.                 if (index == count) {
  152.                     break;
  153.                 }
  154.             }
  155.         }
  156.  
  157.         if (index == 0) {
  158.             System.out.println("[]");
  159.         } else {
  160.             StringBuilder output = new StringBuilder("[");
  161.             for (int i = 0; i < index ; i++) {
  162.  
  163.                 if (i < index - 1) {
  164.                     output.append(result[i]).append(", ");
  165.                 } else {
  166.                     output.append(result[i]).append("]");
  167.                 }
  168.             }
  169.             System.out.println(output);
  170.         }
  171.     }
  172.  
  173.     private static void printFirstOddElements(int[] numbers, int count) {
  174.         if (count < 0 || count > numbers.length) {
  175.             System.out.println("Invalid count");
  176.             return;
  177.         }
  178.  
  179.         int index = 0;
  180.         int[] result = new int[numbers.length];
  181.  
  182.         for (int i = 0; i < numbers.length ; i++) {
  183.             if (numbers[i] % 2 != 0) {
  184.                 result[index++] = numbers[i];
  185.                 if (index == count) {
  186.                     break;
  187.                 }
  188.             }
  189.         }
  190.  
  191.         if (index == 0) {
  192.             System.out.println("[]");
  193.         } else {
  194.             StringBuilder output = new StringBuilder("[");
  195.             for (int i = 0; i < index ; i++) {
  196.  
  197.                 if (i < index - 1) {
  198.                     output.append(result[i]).append(", ");
  199.                 } else {
  200.                     output.append(result[i]).append("]");
  201.                 }
  202.             }
  203.             System.out.println(output);
  204.         }
  205.     }
  206.  
  207.     private static void printLastEvenElements(int[] numbers, int count) {
  208.         if (count < 0 || count > numbers.length) {
  209.             System.out.println("Invalid count");
  210.             return;
  211.         }
  212.         int counter = 0;
  213.         int[] firstEvenElements = new int[numbers.length];
  214.  
  215.         for (int i = 0; i < numbers.length ; i++) {
  216.             if (numbers[i] % 2 == 0) {
  217.                 firstEvenElements[counter++] = numbers[i];
  218.             }
  219.         }
  220.  
  221.         if (counter == 0) {
  222.             System.out.println("[]");
  223.  
  224.         } else {
  225.             int startIndex = counter - count;
  226.             if (startIndex < 0) {
  227.                 startIndex = 0;
  228.             }
  229.             StringBuilder output = new StringBuilder("[");
  230.             for (int i = startIndex; i < counter ; i++) {
  231.  
  232.                 if (i < counter - 1) {
  233.                     output.append(firstEvenElements[i]).append(", ");
  234.                 } else {
  235.                     output.append(firstEvenElements[i]).append("]");
  236.                 }
  237.             }
  238.             System.out.println(output);
  239.         }
  240.     }
  241.  
  242.     private static void printLastOddElements(int[] numbers, int count) {
  243.         if (count < 0 || count > numbers.length) {
  244.             System.out.println("Invalid count");
  245.             return;
  246.         }
  247.         int counter = 0;
  248.         int[] firstOddElements = new int[numbers.length];
  249.  
  250.         for (int i = 0; i < numbers.length ; i++) {
  251.             if (numbers[i] % 2 != 0) {
  252.                 firstOddElements[counter++] = numbers[i];
  253.             }
  254.         }
  255.  
  256.         if (counter == 0) {
  257.             System.out.println("[]");
  258.         } else {
  259.             int startIndex = counter - count;
  260.             if (startIndex < 0) {
  261.                 startIndex = 0;
  262.             }
  263.             StringBuilder output = new StringBuilder("[");
  264.             for (int i = startIndex; i < counter ; i++) {
  265.  
  266.                 if (i < counter - 1) {
  267.                     output.append(firstOddElements[i]).append(", ");
  268.                 } else {
  269.                     output.append(firstOddElements[i]).append("]");
  270.                 }
  271.             }
  272.             System.out.println(output);
  273.         }
  274.     }
  275.  
  276. }
  277.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement