Advertisement
Guest User

Java - Array Manipulator

a guest
Feb 8th, 2020
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.55 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Methods_ArrayManipulator {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         String[] inputAsArray = scanner.nextLine().split("\\s+");
  8.         String command = scanner.nextLine();
  9.  
  10.         while (!"end".equals(command)) {
  11.             String[] tokens = command.split("\\s+");
  12.  
  13.             if (tokens[0].equals("exchange")) {
  14.                 inputAsArray = getNewArray(inputAsArray, tokens[1]);
  15.             } else if (tokens[0].equals("max")) {
  16.                 if (tokens[1].equals("even")) {
  17.                     getMaxEven(inputAsArray);
  18.                 } else {
  19.                     getMaxOdd(inputAsArray);
  20.                 }
  21.             } else if (tokens[0].equals("min")) {
  22.                 if (tokens[1].equals("even")) {
  23.                     getMinEven(inputAsArray);
  24.                 } else {
  25.                     getMinOdd(inputAsArray);
  26.                 }
  27.             } else if (tokens[0].equals("first")) {
  28.                 if (tokens[2].equals("even")) {
  29.                     findFirstEven(inputAsArray, tokens[1]);
  30.                 } else {
  31.                     findFirstOdd(inputAsArray,tokens[1]);
  32.                 }
  33.             } else if (tokens[0].equals("last")) {
  34.                 if (tokens[2].equals("even")) {
  35.                     findLastEven(inputAsArray,tokens[1]);
  36.                 } else {
  37.                     findFirstOdd(inputAsArray,tokens[1]);
  38.                 }
  39.             }
  40.             command = scanner.nextLine();
  41.         }
  42.         System.out.print("[");
  43.         for (int i=0;i<=inputAsArray.length-1;i++) {
  44.             if (i==inputAsArray.length-1) {
  45.                 System.out.print(inputAsArray[i]);
  46.             } else {
  47.                 System.out.print(inputAsArray[i]+", ");
  48.             }
  49.         }
  50.         System.out.println("]");
  51.     }
  52.  
  53.  
  54.  
  55.     private static void findLastOdd(String[] inputAsArray, String token) {
  56.         int neededCount = Integer.parseInt(token);
  57.         if (neededCount > inputAsArray.length) {
  58.             System.out.println("Invalid count");
  59.         } else {
  60.             int countEven = 0;
  61.             for (int i = 0; i <= inputAsArray.length - 1; i++) {
  62.                 if (Integer.parseInt(inputAsArray[i]) % 2 != 0) {
  63.                     countEven++;
  64.                 }
  65.             }
  66.             int[] array = new int[Math.min(countEven, neededCount)];
  67.             if (array.length > 0) {
  68.                 int index = 0;
  69.                 for (int i = inputAsArray.length - 1; i >= 0; i--) {
  70.                     if (Integer.parseInt(inputAsArray[i]) % 2 != 0) {
  71.                         array[index] = Integer.parseInt(inputAsArray[i]);
  72.                         index++;
  73.                         if (index>array.length-1) {
  74.                             break;
  75.                         }
  76.                     }
  77.                 }
  78.                 int[] reversedArray = new int[array.length];
  79.                 for (int i=0;i<=reversedArray.length-1;i++) {
  80.                     reversedArray[i]=array[array.length-(i+1)];
  81.                 }
  82.  
  83.                 System.out.print("[");
  84.                 for (int i=0;i<=reversedArray.length-1;i++) {
  85.                     if (i==reversedArray.length-1) {
  86.                         System.out.print(reversedArray[i]);
  87.                     } else {
  88.                         System.out.print(reversedArray[i]+", ");
  89.                     }
  90.                 }
  91.                 System.out.println("]");
  92.             } else {
  93.                 System.out.println("[]");
  94.             }
  95.         }
  96.     }
  97.  
  98.  
  99.     private static void findLastEven(String[] inputAsArray, String token) {
  100.         int neededCount = Integer.parseInt(token);
  101.         if (neededCount > inputAsArray.length) {
  102.             System.out.println("Invalid count");
  103.         } else {
  104.             int countEven = 0;
  105.             for (int i = 0; i <= inputAsArray.length - 1; i++) {
  106.                 if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  107.                     countEven++;
  108.                 }
  109.             }
  110.             int[] array = new int[Math.min(countEven, neededCount)];
  111.             if (array.length > 0) {
  112.                 int index = 0;
  113.                 for (int i = inputAsArray.length - 1; i >= 0; i--) {
  114.                     if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  115.                         array[index] = Integer.parseInt(inputAsArray[i]);
  116.                         index++;
  117.                         if (index>array.length-1) {
  118.                             break;
  119.                         }
  120.                     }
  121.                 }
  122.                 int[] reversedArray = new int[array.length];
  123.                 for (int i=0;i<=reversedArray.length-1;i++) {
  124.                     reversedArray[i]=array[array.length-(i+1)];
  125.                 }
  126.  
  127.                 System.out.print("[");
  128.                 for (int i=0;i<=reversedArray.length-1;i++) {
  129.                     if (i==reversedArray.length-1) {
  130.                         System.out.print(reversedArray[i]);
  131.                     } else {
  132.                         System.out.print(reversedArray[i]+", ");
  133.                     }
  134.                 }
  135.                 System.out.println("]");
  136.             } else {
  137.                 System.out.println("[]");
  138.             }
  139.         }
  140.     }
  141.  
  142.  
  143.     private static void findFirstOdd(String[] inputAsArray, String token) {
  144.         int neededCount = Integer.parseInt(token);
  145.         if (neededCount > inputAsArray.length) {
  146.             System.out.println("Invalid count");
  147.         } else {
  148.             int countOdd = 0;
  149.             for (int i = 0; i <= inputAsArray.length - 1; i++) {
  150.                 if (Integer.parseInt(inputAsArray[i]) % 2 != 0) {
  151.                     countOdd++;
  152.                 }
  153.             }
  154.             int[] array = new int[Math.min(countOdd, neededCount)];
  155.             if (array.length > 0) {
  156.                 int index = 0;
  157.                 for (int i = 0; i <= inputAsArray.length - 1; i++) {
  158.                     if (Integer.parseInt(inputAsArray[i]) % 2 != 0) {
  159.                         array[index] = Integer.parseInt(inputAsArray[i]);
  160.                         index++;
  161.                         if (index>array.length-1) {
  162.                             break;
  163.                         }
  164.                     }
  165.                 }
  166.                 System.out.print("[");
  167.                 for (int i=0;i<=array.length-1;i++) {
  168.                     if (i==array.length-1) {
  169.                         System.out.print(array[i]);
  170.                     } else {
  171.                         System.out.print(array[i]+", ");
  172.                     }
  173.                 }
  174.                 System.out.println("]");
  175.             } else {
  176.                 System.out.println("[]");
  177.             }
  178.         }
  179.     }
  180.  
  181.  
  182.     private static void findFirstEven(String[] inputAsArray, String token) {
  183.         int neededCount = Integer.parseInt(token);
  184.         if (neededCount > inputAsArray.length) {
  185.             System.out.println("Invalid count");
  186.         } else {
  187.             int countEven = 0;
  188.             for (int i = 0; i <= inputAsArray.length - 1; i++) {
  189.                 if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  190.                     countEven++;
  191.                 }
  192.             }
  193.             int[] array = new int[Math.min(countEven, neededCount)];
  194.             if (array.length > 0) {
  195.                 int index = 0;
  196.                 for (int i = 0; i <= inputAsArray.length - 1; i++) {
  197.                     if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  198.                         array[index] = Integer.parseInt(inputAsArray[i]);
  199.                         index++;
  200.                         if (index>array.length-1) {
  201.                             break;
  202.                         }
  203.                     }
  204.                 }
  205.                 System.out.print("[");
  206.                 for (int i=0;i<=array.length-1;i++) {
  207.                     if (i==array.length-1) {
  208.                         System.out.print(array[i]);
  209.                     } else {
  210.                         System.out.print(array[i]+", ");
  211.                     }
  212.                 }
  213.                 System.out.println("]");
  214.             } else {
  215.                 System.out.println("[]");
  216.             }
  217.         }
  218.     }
  219.  
  220.     private static void getMinOdd(String[] inputAsArray) {
  221.         int minElement = Integer.MAX_VALUE;
  222.         int indexOfMinElement = -1;
  223.         for (int i = 0; i <= inputAsArray.length - 1; i++) {
  224.             if (Integer.parseInt(inputAsArray[i])%2 != 0) {
  225.                 if (Integer.parseInt(inputAsArray[i]) <= minElement) {
  226.                     minElement = Integer.parseInt(inputAsArray[i]);
  227.                     indexOfMinElement = i;
  228.                 }
  229.             }
  230.         }
  231.         if (indexOfMinElement > -1) {
  232.             System.out.println(indexOfMinElement);
  233.         } else {
  234.             System.out.println("No matches");
  235.         }
  236.     }
  237.  
  238.     private static void getMinEven(String[] inputAsArray) {
  239.         int minElement = Integer.MAX_VALUE;
  240.         int indexOfMinElement = -1;
  241.         for (int i = 0; i <= inputAsArray.length - 1; i++) {
  242.             if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  243.                 if (Integer.parseInt(inputAsArray[i]) <= minElement) {
  244.                     minElement = Integer.parseInt(inputAsArray[i]);
  245.                     indexOfMinElement = i;
  246.                 }
  247.             }
  248.         }
  249.         if (indexOfMinElement > -1) {
  250.             System.out.println(indexOfMinElement);
  251.         } else {
  252.             System.out.println("No matches");
  253.         }
  254.     }
  255.  
  256.     private static void getMaxEven(String[] inputAsArray) {
  257.         int maxElement = Integer.MIN_VALUE;
  258.         int indexOfMaxElement = -1;
  259.         for (int i = 0; i <= inputAsArray.length - 1; i++) {
  260.             if (Integer.parseInt(inputAsArray[i]) % 2 == 0) {
  261.                 if (Integer.parseInt(inputAsArray[i]) >= maxElement) {
  262.                     maxElement = Integer.parseInt(inputAsArray[i]);
  263.                     indexOfMaxElement = i;
  264.                 }
  265.             }
  266.         }
  267.         if (indexOfMaxElement > -1) {
  268.             System.out.println(indexOfMaxElement);
  269.         } else {
  270.             System.out.println("No matches");
  271.         }
  272.     }
  273.  
  274.     private static void getMaxOdd(String[] inputAsArray) {
  275.         int maxElement = Integer.MIN_VALUE;
  276.         int indexOfMaxElement = -1;
  277.         for (int i = 0; i <= inputAsArray.length - 1; i++) {
  278.             if (Integer.parseInt(inputAsArray[i]) % 2 != 0) {
  279.                 if (Integer.parseInt(inputAsArray[i]) >= maxElement) {
  280.                     maxElement = Integer.parseInt(inputAsArray[i]);
  281.                     indexOfMaxElement = i;
  282.                 }
  283.             }
  284.         }
  285.         if (indexOfMaxElement > -1) {
  286.             System.out.println(indexOfMaxElement);
  287.         } else {
  288.             System.out.println("No matches");
  289.         }
  290.     }
  291.  
  292.  
  293.     private static String[] getNewArray(String[] inputAsArray, String token) {
  294.         int index = Integer.parseInt(token);
  295.         String[] newArray = new String[inputAsArray.length];
  296.         if (index < 0 || index >= inputAsArray.length) {
  297.             System.out.println("Invalid index");
  298.             return inputAsArray;
  299.         } else {
  300.             int x = 0;
  301.             for (int newStart = index + 1; newStart < inputAsArray.length; newStart++) {
  302.                 newArray[x] = inputAsArray[newStart];
  303.                 x++;
  304.             }
  305.             for (int newEnd = 0; newEnd <= index; newEnd++) {
  306.                 newArray[x] = inputAsArray[newEnd];
  307.                 x++;
  308.             }
  309.  
  310.         }
  311.         return newArray;
  312.     }
  313. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement