Advertisement
desislava_topuzakova

04. List Operations

Oct 14th, 2022
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.34 KB | None | 0 0
  1. package lists;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.stream.Collectors;
  7.  
  8. public class ListOperations_04 {
  9. public static void main(String[] args) {
  10. Scanner scanner = new Scanner(System.in);
  11. //1. списък с цели числа -> входни данни
  12. //2. въвеждаме команди -> спираме: "End"
  13. List<Integer> numbers = Arrays.stream(scanner.nextLine() //"1 23 29 18 43 21 20"
  14. .split("\\s+")) //["1", "23", "29", "18", "43", "21", "20"]
  15. .map(Integer::parseInt) //[1, 23, 29, 18, 43, 21, 20]
  16. .collect(Collectors.toList()); // {1, 23, 29, 18, 43, 21, 20}
  17.  
  18. String command = scanner.nextLine();
  19. while (!command.equals("End")) {
  20. //валидна команда
  21. if (command.contains("Add")) {
  22. //• "Add {number}" - add number at the end
  23. //"Add 3".split(" ") -> ["Add", "3"]
  24. int numberToAdd = Integer.parseInt(command.split("\\s+")[1]);
  25. numbers.add(numberToAdd);
  26. } else if (command.contains("Insert")) {
  27. //• "Insert {number} {index}" - insert number at given index
  28. //"Insert 10 2".split(" ") -> ["Insert", "10", "2"]
  29. int numberToInsert = Integer.parseInt(command.split("\\s+")[1]);
  30. int index = Integer.parseInt(command.split("\\s+")[2]);
  31.  
  32. //проверка дали съществува индекса в списъка (index)
  33. //{3, 4, 5, 9 , 12} -> [0; size - 1]
  34. if(isValidIndex(index, numbers)) {
  35. //валиден индекс
  36. numbers.add(index, numberToInsert);
  37. } else {
  38. //невалиден индекс
  39. System.out.println("Invalid index");
  40. }
  41. } else if (command.contains("Remove")) {
  42. //• "Remove {index}" - remove that index
  43. //"Remove 2".split(" ") -> ["Remove", "2"]
  44. int indexForRemove = Integer.parseInt(command.split("\\s+")[1]);
  45.  
  46. //проверка дали съществува индекса в списъка (indexForRemove)
  47. //{3, 4, 5, 9 , 12} -> [0; size - 1]
  48. if (isValidIndex(indexForRemove, numbers)) {
  49. //валиден индекс
  50. numbers.remove(indexForRemove);
  51. } else {
  52. //невалиден индекс
  53. System.out.println("Invalid index");
  54. }
  55. } else if (command.contains("Shift left")) {
  56. //• "Shift left {count}" - first number becomes last 'count' times
  57. //"Shift left 2".split(" ") -> ["Shift", "left", "2"]
  58. int countShiftLeft = Integer.parseInt(command.split("\\s+")[2]);
  59. //повтаряме нещо -> countShiftLeft пъти
  60. for (int time = 1; time <= countShiftLeft; time++) {
  61. //first number becomes last
  62. //{3, 4, 6, 7, 1}
  63. //1. взимам първото число от списъка -> index = 0
  64. int firstNumber = numbers.get(0);
  65. //2. премахвам по индекс първото число от списъка -> {4, 6, 7, 1}
  66. numbers.remove(0);
  67. //3. добавям го накрая на списъка -> {4, 6, 7, 1, 3}
  68. numbers.add(firstNumber);
  69. }
  70. } else if (command.contains("Shift right")) {
  71. //• "Shift right {count}" - last number becomes first 'count' times
  72. //"Shift right 3".split(" ") -> ["Shift", "right", "3"]
  73. int countShiftRight = Integer.parseInt(command.split("\\s+")[2]);
  74. //повтаряме дейност -> countShiftRight пъти
  75. for (int time = 1; time <= countShiftRight; time++) {
  76. //last number becomes first
  77. //{3, 4, 6, 7, 1}
  78. //1. взимам последното число от списъка -> index = size - 1
  79. int lastNumber = numbers.get(numbers.size() - 1);
  80. //2. премахвам последното число от списъка -> {3, 4, 6, 7}
  81. numbers.remove(numbers.size() - 1);
  82. //3. добавям го в началото на списъка -> {1, 3, 4, 6, 7}
  83. numbers.add(0,lastNumber);
  84. }
  85. }
  86. command = scanner.nextLine();
  87. }
  88.  
  89. //крайния списък с числа
  90. for (int number : numbers) {
  91. System.out.print(number + " ");
  92. }
  93.  
  94. }
  95.  
  96. //метод, който проверява дали даден индекс е валиден
  97. //true -> валиден индекс -> [0, size - 1]
  98. //false -> невалиден индекс
  99. public static boolean isValidIndex (int index, List<Integer> numbers) {
  100. return index >= 0 && index <= numbers.size() - 1;
  101. }
  102. }
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement