desislava_topuzakova

04. List Operations

Feb 14th, 2021
1,211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.18 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3.  
  4. public class demo {
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.        List<Integer> numbers = Arrays.stream(scanner.nextLine().split("\\s+"))
  8.                .map(Integer::parseInt).collect(Collectors.toList());
  9.  
  10.        String input = scanner.nextLine();
  11.  
  12.        while(!input.equals("End")) {
  13.            String[] tokens = input.split("\\s+");
  14.            String command = tokens[0];
  15.            switch(command) {
  16.                case "Add":
  17.                    //"Add 10" -> ["Add", "10"]
  18.                    int numberToAdd = Integer.parseInt(tokens[1]);
  19.                    numbers.add(numberToAdd);
  20.                    break;
  21.                case "Insert":
  22.                    //"Insert 3 0" -> ["Insert", "3", "0"]
  23.                    int addNumber = Integer.parseInt(tokens[1]);
  24.                    int index = Integer.parseInt(tokens[2]);
  25.                    //validate index
  26.                    if(isValidIndex(index, numbers.size())) {
  27.                        numbers.add(index, addNumber);
  28.                    } else {
  29.                        System.out.println("Invalid index");
  30.                    }
  31.                    break;
  32.                case "Remove":
  33.                    //"Remove 2" -> ["Remove", "2"]
  34.                    int indexRemove = Integer.parseInt(tokens[1]);
  35.                    //validate index
  36.                    if(isValidIndex(indexRemove, numbers.size())) {
  37.                     numbers.remove(indexRemove);
  38.                    } else {
  39.                        System.out.println("Invalid index");
  40.                    }
  41.                    
  42.                    break;
  43.                case "Shift":
  44.                    //"Shift right 5" -> ["Shift", "right", "5"]
  45.                    //"Shift left 5" -> ["Shift", "left", "5"]
  46.                    String direction = tokens[1];
  47.                    int count = Integer.parseInt(tokens[2]);
  48.                    if(direction.equals("right")) {
  49.                        for (int i = 1; i <= count ; i++) {
  50.                            //последния става първи
  51.                            //1. последния
  52.                            //1 23 29 18 43 21
  53.                            int lastNumber = numbers.get(numbers.size() - 1);
  54.                            numbers.remove(numbers.size() - 1);
  55.                            numbers.add(0, lastNumber);
  56.                        }
  57.  
  58.                    } else if (direction.equals("left")) {
  59.                        for (int i = 1; i <= count ; i++) {
  60.                            int firstNumber = numbers.get(0);
  61.                            numbers.remove(0);
  62.                            numbers.add(firstNumber);
  63.                        }
  64.                    }
  65.                    break;
  66.            }
  67.  
  68.            input = scanner.nextLine();
  69.        }
  70.         printList(numbers);
  71.  
  72.  
  73.     }
  74.  
  75.     private static boolean isValidIndex(int index, int length) {
  76.         return index >= 0 && index <= length - 1;
  77.  
  78.     }
  79.  
  80.  
  81.     private static void printList(List<Integer> wagons) {
  82.         for (int wagon : wagons) {
  83.             System.out.print(wagon + " ");
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment