Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Fundamentals;
- import java.util.Arrays;
- import java.util.Scanner;
- public class ArrayManipulator {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int[] numbers = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
- String input = scanner.nextLine();
- while (!input.equals("end")) {
- String[] command = input.split(" ");
- switch (command[0]) {
- case "exchange":
- numbers = getExchangedArray(numbers, Integer.parseInt(command[1]));
- break;
- case "max":
- if (command[1].equals("even")) {
- printMaxEvenIndex(numbers);
- } else if (command[1].equals("odd")) {
- printMaxOddIndex(numbers);
- }
- break;
- case "min":
- if (command[1].equals("even")) {
- printMinEvenIndex(numbers);
- } else if (command[1].equals("odd")) {
- printMinOddIndex(numbers);
- }
- break;
- case "first":
- int countFirst = Integer.parseInt(command[1]);
- if (command[2].equals("even")) {
- printFirstEvenElements(numbers, countFirst);
- } else if (command[2].equals("odd")) {
- printFirstOddElements(numbers, countFirst);
- }
- break;
- case "last":
- int countLast = Integer.parseInt(command[1]);
- if (command[2].equals("even")) {
- printLastEvenElements(numbers, countLast);
- } else if (command[2].equals("odd")) {
- printLastOddElements(numbers, countLast);
- }
- break;
- }
- input = scanner.nextLine();
- }
- System.out.println(Arrays.toString(numbers));
- }
- private static int[] getExchangedArray(int[] numbers, int index) {
- int[] exchangedArray = new int[numbers.length];
- int counter = 0;
- if (index < 0 || index >= numbers.length) {
- System.out.println("Invalid index");
- } else {
- for (int i = index + 1; i < numbers.length ; i++) {
- exchangedArray[counter++] = numbers[i];
- }
- for (int i = 0; i <= index ; i++) {
- exchangedArray[counter++] = numbers[i];
- }
- numbers = exchangedArray;
- }
- return numbers;
- }
- private static void printMaxEvenIndex(int[] numbers) {
- int maxEven = Integer.MIN_VALUE;
- int currentIndex = -1;
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 == 0 && numbers[i] >= maxEven) {
- maxEven = numbers[i];
- currentIndex = i;
- }
- }
- if (currentIndex == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(currentIndex);
- }
- }
- private static void printMaxOddIndex(int[] numbers) {
- int maxOdd = Integer.MIN_VALUE;
- int currentIndex = -1;
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 != 0 && numbers[i] >= maxOdd) {
- maxOdd = numbers[i];
- currentIndex = i;
- }
- }
- if (currentIndex == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(currentIndex);
- }
- }
- private static void printMinEvenIndex(int[] numbers) {
- int minEven = Integer.MAX_VALUE;
- int currentIndex = -1;
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 == 0 && numbers[i] <= minEven) {
- minEven = numbers[i];
- currentIndex = i;
- }
- }
- if (currentIndex == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(currentIndex);
- }
- }
- private static void printMinOddIndex(int[] numbers) {
- int minOdd = Integer.MAX_VALUE;
- int currentIndex = -1;
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 != 0 && numbers[i] <= minOdd) {
- minOdd = numbers[i];
- currentIndex = i;
- }
- }
- if (currentIndex == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(currentIndex);
- }
- }
- private static void printFirstEvenElements(int[] numbers, int count) {
- if (count < 0 || count > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int index = 0;
- int[] result = new int[numbers.length];
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 == 0) {
- result[index++] = numbers[i];
- if (index == count) {
- break;
- }
- }
- }
- if (index == 0) {
- System.out.println("[]");
- } else {
- StringBuilder output = new StringBuilder("[");
- for (int i = 0; i < index ; i++) {
- if (i < index - 1) {
- output.append(result[i]).append(", ");
- } else {
- output.append(result[i]).append("]");
- }
- }
- System.out.println(output);
- }
- }
- private static void printFirstOddElements(int[] numbers, int count) {
- if (count < 0 || count > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int index = 0;
- int[] result = new int[numbers.length];
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 != 0) {
- result[index++] = numbers[i];
- if (index == count) {
- break;
- }
- }
- }
- if (index == 0) {
- System.out.println("[]");
- } else {
- StringBuilder output = new StringBuilder("[");
- for (int i = 0; i < index ; i++) {
- if (i < index - 1) {
- output.append(result[i]).append(", ");
- } else {
- output.append(result[i]).append("]");
- }
- }
- System.out.println(output);
- }
- }
- private static void printLastEvenElements(int[] numbers, int count) {
- if (count < 0 || count > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int counter = 0;
- int[] firstEvenElements = new int[numbers.length];
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 == 0) {
- firstEvenElements[counter++] = numbers[i];
- }
- }
- if (counter == 0) {
- System.out.println("[]");
- } else {
- int startIndex = counter - count;
- if (startIndex < 0) {
- startIndex = 0;
- }
- StringBuilder output = new StringBuilder("[");
- for (int i = startIndex; i < counter ; i++) {
- if (i < counter - 1) {
- output.append(firstEvenElements[i]).append(", ");
- } else {
- output.append(firstEvenElements[i]).append("]");
- }
- }
- System.out.println(output);
- }
- }
- private static void printLastOddElements(int[] numbers, int count) {
- if (count < 0 || count > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int counter = 0;
- int[] firstOddElements = new int[numbers.length];
- for (int i = 0; i < numbers.length ; i++) {
- if (numbers[i] % 2 != 0) {
- firstOddElements[counter++] = numbers[i];
- }
- }
- if (counter == 0) {
- System.out.println("[]");
- } else {
- int startIndex = counter - count;
- if (startIndex < 0) {
- startIndex = 0;
- }
- StringBuilder output = new StringBuilder("[");
- for (int i = startIndex; i < counter ; i++) {
- if (i < counter - 1) {
- output.append(firstOddElements[i]).append(", ");
- } else {
- output.append(firstOddElements[i]).append("]");
- }
- }
- System.out.println(output);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement