Advertisement
MartinPaunov

Array Manipulator

Oct 17th, 2018
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.69 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class LiveDemos {
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         int[] numbers = Arrays.stream(scanner.nextLine().split(" "))
  9.                 .mapToInt(Integer::parseInt)
  10.                 .toArray();
  11.  
  12.         String command = scanner.nextLine();
  13.  
  14.         while (!command.equals("end")) {
  15.  
  16.             String[] cmdArgs = command.split(" ");
  17.  
  18.             if (cmdArgs[0].equals("exchange")) {
  19.                 int index = Integer.parseInt(cmdArgs[1]);
  20.                 if (index >= 0 && index < numbers.length) {
  21.                     exchange(numbers, index);
  22.                 } else {
  23.                     System.out.println("Invalid index");
  24.                 }
  25.             } else if (cmdArgs[0].equals("max")) {
  26.                 if (cmdArgs[1].equals("even")) {
  27.                     int index = findMaxEvenIndex(numbers);
  28.                     if (index != -1) {
  29.                         System.out.println(index);
  30.                     } else {
  31.                         System.out.println("No matches");
  32.                     }
  33.                 } else {
  34.                     int index = findMaxOddIndex(numbers);
  35.                     if (index != -1) {
  36.                         System.out.println(index);
  37.                     } else {
  38.                         System.out.println("No matches");
  39.                     }
  40.                 }
  41.             } else if (cmdArgs[0].equals("min")) {
  42.                 if (cmdArgs[1].equals("even")) {
  43.                     int index = findMinEvenIndex(numbers);
  44.                     if (index != -1) {
  45.                         System.out.println(index);
  46.                     } else {
  47.                         System.out.println("No matches");
  48.                     }
  49.                 } else {
  50.                     int index = findMinOddIndex(numbers);
  51.                     if (index != -1) {
  52.                         System.out.println(index);
  53.                     } else {
  54.                         System.out.println("No matches");
  55.                     }
  56.                 }
  57.             } else if (cmdArgs[0].equals("first")) {
  58.                 int count = Integer.parseInt(cmdArgs[1]);
  59.                 if (cmdArgs[2].equals("even")) {
  60.                     if (count <= numbers.length) {
  61.                         printFirstEven(numbers, count);
  62.                     } else {
  63.                         System.out.println("Invalid count");
  64.                     }
  65.                 }else{
  66.                     int oddCount = Integer.parseInt(cmdArgs[1]);
  67.                     if (oddCount <= numbers.length) {
  68.                         printFirstOdd(numbers, oddCount);
  69.                     } else {
  70.                         System.out.println("Invalid count");
  71.                     }
  72.                 }
  73.             } else if (cmdArgs[0].equals("last")) {
  74.                 int count = Integer.parseInt(cmdArgs[1]);
  75.                 if (cmdArgs[2].equals("even")) {
  76.                     if (count <= numbers.length) {
  77.                         printLastEven(numbers, count);
  78.                     } else {
  79.                         System.out.println("Invalid count");
  80.                     }
  81.                 }else{
  82.                     int oddCount = Integer.parseInt(cmdArgs[1]);
  83.                     if (oddCount <= numbers.length) {
  84.                         printLastOdd(numbers, oddCount);
  85.                     } else {
  86.                         System.out.println("Invalid count");
  87.                     }
  88.                 }
  89.             }
  90.  
  91.             command = scanner.nextLine();
  92.         }
  93.  
  94.         printArray(numbers);
  95.     }
  96.  
  97.     private static void printLastOdd(int[] numbers, int count) {
  98.         int[] arr = new int[numbers.length];
  99.  
  100.         for (int i = numbers.length - 1; i >= 0; i--) {
  101.             if (numbers[i] % 2 != 0 && count > 0) {
  102.                 count--;
  103.                 arr[i] = numbers[i];
  104.             } else {
  105.                 arr[i] = -1;
  106.             }
  107.         }
  108.  
  109.         printArray(arr);
  110.     }
  111.  
  112.     private static void printLastEven(int[] numbers, int count) {
  113.         int[] arr = new int[numbers.length];
  114.  
  115.         for (int i = numbers.length - 1; i >= 0; i--) {
  116.             if (numbers[i] % 2 == 0 && count > 0) {
  117.                 count--;
  118.                 arr[i] = numbers[i];
  119.             } else {
  120.                 arr[i] = -1;
  121.             }
  122.         }
  123.  
  124.         printArray(arr);
  125.     }
  126.  
  127.     private static void printFirstOdd(int[] numbers, int count) {
  128.         int[] arr = new int[numbers.length];
  129.  
  130.         for (int i = 0; i < numbers.length; i++) {
  131.             if (numbers[i] % 2 != 0 && count > 0) {
  132.                 count--;
  133.                 arr[i] = numbers[i];
  134.             } else {
  135.                 arr[i] = -1;
  136.             }
  137.         }
  138.  
  139.         printArray(arr);
  140.     }
  141.  
  142.     private static void printFirstEven(int[] numbers, int count) {
  143.         int[] arr = new int[numbers.length];
  144.  
  145.         for (int i = 0; i < numbers.length; i++) {
  146.             if (numbers[i] % 2 == 0 && count > 0) {
  147.                 count--;
  148.                 arr[i] = numbers[i];
  149.             } else {
  150.                 arr[i] = -1;
  151.             }
  152.         }
  153.  
  154.         printArray(arr);
  155.     }
  156.  
  157.     private static int findMinOddIndex(int[] numbers) {
  158.         int index = -1;
  159.  
  160.         int maxNum = Integer.MAX_VALUE;
  161.  
  162.         for (int i = 0; i < numbers.length; i++) {
  163.             if (maxNum >= numbers[i] && numbers[i] % 2 != 0) {
  164.                 maxNum = numbers[i];
  165.                 index = i;
  166.             }
  167.         }
  168.         return index;
  169.     }
  170.  
  171.     private static int findMinEvenIndex(int[] numbers) {
  172.         int index = -1;
  173.  
  174.         int maxNum = Integer.MAX_VALUE;
  175.  
  176.         for (int i = 0; i < numbers.length; i++) {
  177.             if (maxNum >= numbers[i] && numbers[i] % 2 == 0) {
  178.                 maxNum = numbers[i];
  179.                 index = i;
  180.             }
  181.         }
  182.         return index;
  183.     }
  184.  
  185.     private static int findMaxOddIndex(int[] numbers) {
  186.         int index = -1;
  187.  
  188.         int maxNum = Integer.MIN_VALUE;
  189.  
  190.         for (int i = 0; i < numbers.length; i++) {
  191.             if (maxNum <= numbers[i] && numbers[i] % 2 != 0) {
  192.                 maxNum = numbers[i];
  193.                 index = i;
  194.             }
  195.         }
  196.         return index;
  197.     }
  198.  
  199.     private static int findMaxEvenIndex(int[] numbers) {
  200.         int index = -1;
  201.         int maxNum = Integer.MIN_VALUE;
  202.  
  203.         for (int i = 0; i < numbers.length; i++) {
  204.             if (maxNum <= numbers[i] && numbers[i] % 2 == 0) {
  205.                 maxNum = numbers[i];
  206.                 index = i;
  207.             }
  208.         }
  209.         return index;
  210.     }
  211.  
  212.     private static void printArray(int[] numbers) {
  213.         System.out.print("[");
  214.         boolean printsFirst = true;
  215.         for (int i = 0; i < numbers.length; i++) {
  216.             if (numbers[i] != -1) {
  217.                 if (printsFirst) {
  218.                     System.out.print(numbers[i]);
  219.                     printsFirst = false;
  220.                 } else {
  221.                 System.out.print(", " + numbers[i]);
  222.             }
  223.         }
  224.     }
  225.         System.out.println("]");
  226.  
  227. }
  228.  
  229.     private static void exchange(int[] numbers, int index) {
  230.         int[] first = new int[index + 1];
  231.         int[] second = new int[numbers.length - (index + 1)];
  232.  
  233.         for (int i = 0; i <= index; i++) {
  234.             first[i] = numbers[i];
  235.         }
  236.         for (int i = index + 1; i < numbers.length; i++) {
  237.             second[i - (index + 1)] = numbers[i];
  238.         }
  239.  
  240.         for (int i = 0; i < second.length; i++) {
  241.             numbers[i] = second[i];
  242.         }
  243.  
  244.         for (int i = 0; i < first.length; i++) {
  245.             numbers[i + second.length] = first[i];
  246.         }
  247.     }
  248. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement