Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Arrays;
- public class Pr11ArrayManipulator_v2 {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- int[] numbers = Arrays
- .stream(reader.readLine().split("\\s+"))
- .mapToInt(Integer::parseInt)
- .toArray();
- String commandConsole;
- while (!("end").equals(commandConsole = reader.readLine())) {
- String[] commandArray = commandConsole.split("\\s+");
- String command = commandArray[0];
- switch (command) {
- case "exchange":
- exchangeArray(numbers, Integer.parseInt(commandArray[1]));
- break;
- case "min":
- minElementIndex(numbers, commandArray[1]);
- break;
- case "max":
- maxElementIndex(numbers, commandArray[1]);
- break;
- case "first":
- firstCountElements(numbers, Integer.parseInt(commandArray[1]), commandArray[2]);
- break;
- case "last":
- lastCountElements(numbers, Integer.parseInt(commandArray[1]), commandArray[2]);
- break;
- }
- }
- System.out.println(Arrays.toString(numbers));
- }
- private static void exchangeArray(int[] numbers, int exchangeNumber) {
- if (exchangeNumber < 0 || exchangeNumber >= numbers.length) {
- System.out.println("Invalid index");
- return;
- }
- int j = 0;
- int[] result = new int[numbers.length];
- for (int i = exchangeNumber + 1; i < numbers.length; i++) {
- result[j] = numbers[i];
- j++;
- }
- for (int i = 0; i <= exchangeNumber; i++) {
- result[j] = numbers[i];
- j++;
- }
- System.arraycopy(result, 0, numbers, 0, numbers.length);
- }
- private static void minElementIndex(int[] numbers, String oddOrEven) {
- int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
- int minElementValue = Integer.MAX_VALUE;
- int index = -1;
- for (int i = 0; i < numbers.length; i++) {
- if (numbers[i] % 2 == caseOddEven) {
- if (numbers[i] <= minElementValue) {
- minElementValue = numbers[i];
- index = i;
- }
- }
- }
- if (index == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(index);
- }
- }
- private static void maxElementIndex(int[] numbers, String oddOrEven) {
- int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
- int maxElementValue = Integer.MIN_VALUE;
- int index = -1;
- for (int i = 0; i < numbers.length; i++) {
- if (numbers[i] % 2 == caseOddEven) {
- if (numbers[i] >= maxElementValue) {
- maxElementValue = numbers[i];
- index = i;
- }
- }
- }
- if (index == -1) {
- System.out.println("No matches");
- } else {
- System.out.println(index);
- }
- }
- private static void firstCountElements(int[] numbers, int counter, String oddOrEven) {
- int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
- if (counter < 0 || counter > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int countFoundElements = 0;
- for (int i = 0; i < numbers.length; i++) {
- if (numbers[i] % 2 == caseOddEven) {
- countFoundElements++;
- }
- }
- if (countFoundElements == 0) {
- System.out.println("[]");
- return;
- }
- int counterPrint;
- int[] result;
- if (countFoundElements > counter) {
- result = new int[counter];
- counterPrint = counter;
- } else {
- result = new int[countFoundElements];
- counterPrint = countFoundElements;
- }
- int j = 0;
- for (int i = 0; i < numbers.length; i++) {
- if (numbers[i] % 2 == caseOddEven) {
- result[j] = numbers[i];
- j++;
- counterPrint--;
- }
- if (counterPrint == 0) {
- break;
- }
- }
- System.out.println(Arrays.toString(result));
- }
- private static void lastCountElements(int[] numbers, int counter, String oddOrEven) {
- int caseOddEven = (oddOrEven.equals("odd")) ? 1 : 0;
- if (counter < 0 || counter > numbers.length) {
- System.out.println("Invalid count");
- return;
- }
- int countFoundElements = 0;
- for (int i = 0; i < numbers.length; i++) {
- if (numbers[i] % 2 == caseOddEven) {
- countFoundElements++;
- }
- }
- if (countFoundElements == 0) {
- System.out.println("[]");
- return;
- }
- int counterPrint;
- int[] result;
- if (countFoundElements > counter) {
- result = new int[counter];
- counterPrint = counter;
- } else {
- result = new int[countFoundElements];
- counterPrint = countFoundElements;
- }
- int j = result.length - 1;
- for (int i = numbers.length - 1; i >= 0; i--) {
- if (numbers[i] % 2 == caseOddEven) {
- result[j] = numbers[i];
- j--;
- counterPrint--;
- }
- if (counterPrint == 0) {
- break;
- }
- }
- System.out.println(Arrays.toString(result));
- }
- }
Add Comment
Please, Sign In to add comment