Advertisement
Guest User

ArrayManipulator2

a guest
Feb 13th, 2020
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.77 KB | None | 0 0
  1. package _11METHODS_EXERCISE;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class arrman {
  7.     private static boolean isInRange(int[] array, int index) {
  8.         boolean inRange = false;
  9.         if (index >= 0 && index < array.length) { //индекса не е отрицателен и е в рамките на масива
  10.             inRange = true;
  11.         }
  12.         return inRange;
  13.     }
  14.  
  15.     private static void rotateArr(int[] array, int index) {
  16.         int[] leftArray = new int[index + 1];
  17.         int[] rightArray = new int[array.length - leftArray.length];
  18.         for (int i = 0; i < leftArray.length; i++) {
  19.             leftArray[i] = array[i];
  20.         }
  21.         int newIndex = 0;
  22.         for (int i = index + 1; i < array.length; i++) {
  23.             rightArray[newIndex] = array[i];
  24.             newIndex++;
  25.         }
  26.         for (int i = 0; i < rightArray.length; i++) {
  27.             array[i] = rightArray[i];
  28.         }
  29.         for (int i = rightArray.length; i < array.length; i++) {
  30.             array[i] = leftArray[i - rightArray.length];
  31.         }
  32.     }
  33.  
  34.     private static int maxEven(int[] array) {
  35.         int index = -1; //за да бъде невалиден индекс
  36.         int maxValue = Integer.MIN_VALUE; //за да се пази стойността
  37.         for (int i = 0; i < array.length; i++) {
  38.             if (array[i] % 2 == 0 && array[i] >= maxValue) {
  39.                 maxValue = array[i]; //максималния става равен на текущия
  40.                 index = i;
  41.             }
  42.         }
  43.         return index;
  44.     }
  45.  
  46.     private static int maxOdd(int[] array) {
  47.         int index = -1; //за да бъде невалиден индекс
  48.         int maxValue = Integer.MIN_VALUE; //за да се пази стойността
  49.         for (int i = 0; i < array.length; i++) {
  50.             if (array[i] % 2 != 0 && array[i] >= maxValue) {
  51.                 maxValue = array[i]; //максималния става равен на текущия
  52.                 index = i;
  53.             }
  54.         }
  55.         return index;
  56.     }
  57.  
  58.     private static int minEven(int[] array) {
  59.         int index = -1; //за да бъде невалиден индекс
  60.         int minValue = Integer.MAX_VALUE; //за да се пази стойността
  61.         for (int i = 0; i < array.length; i++) {
  62.             if (array[i] % 2 == 0 && array[i] <= minValue) {
  63.                 minValue = array[i]; //мминималния става равен на текущия
  64.                 index = i;
  65.             }
  66.         }
  67.         return index;
  68.     }
  69.  
  70.     private static int minOdd(int[] arr) {
  71.         int index = -1; //за да бъде невалиден индекс
  72.         int minValue = Integer.MAX_VALUE; //за да се пази стойността
  73.         for (int i = 0; i < arr.length; i++) {
  74.             if (arr[i] % 2 != 0 && arr[i] <= minValue) {
  75.                 minValue = arr[i]; //максималния става равен на текущия
  76.                 index = i;
  77.             }
  78.         }
  79.         return index;
  80.     }
  81.  
  82.     private static int[] firstEven(int[] array, int counter) {
  83.         int[] result = new int[counter];
  84.         //пълни масива само с отрицателни числа
  85.         Arrays.fill(result, -1);
  86.         int index = 0;
  87.         for (int num : array) {
  88.             if (num % 2 == 0 && index < result.length) {
  89.                 result[index] = num;
  90.                 index++;
  91.             }
  92.         }
  93.         return result;
  94.     }
  95.  
  96.     private static void printArray(int[] array) {
  97.         System.out.print("[");
  98.         for (int i = 0; i < array.length; i++) {
  99.             if (array[i] == -1) {
  100.                 continue;
  101.             }
  102.             if (i == array.length - 1) {
  103.                 System.out.print(array[i]);
  104.             } else if(array[i+1]!=-1){
  105.                 System.out.print(array[i] + ", ");
  106.             } else {
  107.                 System.out.print(array[i]);
  108.             }
  109.         }
  110.         System.out.println("]");
  111.     }
  112.  
  113.     private static int[] firstOdd(int[] array, int count) {
  114.         int[] result = new int[count];
  115.         //напълни масива само с отрицателни числа
  116.         Arrays.fill(result, -1);
  117.         int index = 0;
  118.         for (int i = 0; i < array.length; i++) {
  119.             int num = array[i];
  120.             if (num % 2 != 0 && index < result.length) {
  121.                 result[index] = num;
  122.                 index++;
  123.             }
  124.         }
  125.         return result;
  126.     }
  127.  
  128.     private static int[] lastEven(int[] array, int count) {
  129.         int[] result = new int[count];
  130.         for (int i = result.length - 1; i >= 0; i--) { //напълни масива само с отрицателни числа
  131.             result[i] = -1;
  132.         }
  133.         int index = result.length - 1;
  134.         for (int i = array.length - 1; i >= 0; i--) {
  135.             if (array[i] % 2 == 0 && index < result.length && index >= 0) {
  136.                 result[index] = array[i];
  137.                 index--;
  138.             }
  139.         }
  140.         return result;
  141.     }
  142.  
  143.     private static int[] lastOdd(int[] array, int count) {
  144.         int[] result = new int[count];
  145.         //напълни масива само с отрицателни числа
  146.         Arrays.fill(result, -1);
  147.         int index = result.length - 1;
  148.         for (int i = array.length - 1; i >= 0; i--) {
  149.             if (array[i] % 2 != 0 && index < result.length && index >= 0) {
  150.                 result[index] = array[i];
  151.                 index--;
  152.             }
  153.         }
  154.         return result;
  155.     }
  156.  
  157.     public static void main(String[] args) {
  158.         Scanner scanner = new Scanner(System.in);
  159.         String[] inputText = scanner.nextLine().split("\\s+");
  160.         int[] array = new int[inputText.length];
  161.         for (int i = 0; i < array.length; i++) {
  162.             array[i] = Integer.parseInt(inputText[i]);
  163.         }
  164.  
  165.         String inputCommand = scanner.nextLine();
  166.         while (!"end".equals(inputCommand)) {
  167.             String[] tokens = inputCommand.split("\\s+");
  168.             String type = tokens[0]; //типът на командата е винаги първи елемент от масива
  169.  
  170.             if ("exchange".equals(type)) {
  171.                 int index = Integer.parseInt(tokens[1]); //на втора позиция в масива е индекса
  172.                 if (isInRange(array, index)) { //проверка дали този индекс е валиден.
  173.                     rotateArr(array, index);
  174.                 } else {
  175.                     System.out.println("Invalid index");
  176.                 }
  177.             } else if ("max".equals(type)) {
  178.                 int index;
  179.                 if ("even".equals(tokens[1])) {
  180.                     index = maxEven(array);
  181.                 } else {
  182.                     index = maxOdd(array);
  183.                 }
  184.                 if (index != -1) {
  185.                     System.out.println(index);
  186.                 } else {
  187.                     System.out.println("No matches");
  188.                 }
  189.  
  190.             } else if ("min".equals(type)) {
  191.                 int index;
  192.                 if ("even".equals(tokens[1])) {
  193.                     index = minEven(array);
  194.                 } else {
  195.                     index = minOdd(array);
  196.                 }
  197.                 if (index != -1) {
  198.                     System.out.println(index);
  199.                 } else {
  200.                     System.out.println("No matches");
  201.                 }
  202.  
  203.             } else if ("first".equals(type)) {
  204.                 int count = Integer.parseInt(tokens[1]);
  205.                 if (count > array.length) {
  206.                     System.out.println("Invalid count");
  207.                 } else {
  208.                     if ("even".equals(tokens[2])) {
  209.                         int[] result = firstEven(array, count);
  210.                         printArray(result);
  211.                     } else {
  212.                         int[] result = firstOdd(array, count);
  213.                         printArray(result);
  214.                     }
  215.                 }
  216.  
  217.  
  218.             } else if ("last".equals(type)) {
  219.                 int count = Integer.parseInt(tokens[1]);
  220.                 if (count > array.length) {
  221.                     System.out.println("Invalid count");
  222.                 } else {
  223.                     if ("even".equals(tokens[2])) {
  224.                         int[] result = lastEven(array, count);
  225.                         printArray(result);
  226.                     } else {
  227.                         int[] result = lastOdd(array, count);
  228.                         printArray(result);
  229.                     }
  230.                 }
  231.  
  232.             }
  233.             inputCommand = scanner.nextLine();
  234.  
  235.         }
  236.         printArray(array);
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement