Advertisement
desislava_topuzakova

04. Applied Arithmetics

Jan 25th, 2022
1,066
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package FunctionalProgramming_Exercise;
  2.  
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Scanner;
  6. import java.util.function.Consumer;
  7. import java.util.function.Function;
  8. import java.util.stream.Collectors;
  9.  
  10. public class AppliedArithmetics_04 {
  11.     public static void main(String[] args) {
  12.         Scanner scanner = new Scanner(System.in);
  13.         //Function<приема, връща> -> apply
  14.         //Consumer<приема> -> void -> accept
  15.         //Supplier<връща> -> get
  16.         //Predicate<приема> -> връща true / false -> test
  17.         //BiFunction<приема1, приема2, връща> -> apply
  18.         List<Integer> numbers = Arrays.stream(scanner.nextLine().split("\\s+"))
  19.                 .map(Integer::parseInt)
  20.                 .collect(Collectors.toList());
  21.         String command = scanner.nextLine();
  22.         //add -> добавя 1 към всеки елемент на листа: приемаме списък -> връщаме списък с модифицирани елементи
  23.         Function<List<Integer>, List<Integer>> add = list -> list.stream().map(number -> number += 1).collect(Collectors.toList());
  24.         //multiply -> умножаваме всеки елемент по 2:  приемаме списък -> връщаме списък с модифицирани елементи
  25.         Function<List<Integer>,List<Integer>> multiply = list -> list.stream().map(number -> number *= 2).collect(Collectors.toList());
  26.         //subtract -> изважда 1 от всеки елемент в листа: приемаме списък -> връщаме списък с модифицирани елементи
  27.         Function<List<Integer>, List<Integer>> subtract = list -> list.stream().map(number -> number -= 1).collect(Collectors.toList());
  28.         //print -> Принтира всички елементи на списъка на нов ред: приемаме списък -> отпчетваме всеки елемент
  29.         Consumer<List<Integer>> print = list -> list.forEach(number -> System.out.print(number + " "));
  30.  
  31.         while(!command.equals("end")) {
  32.               //command = "add", "multiply", "subtract", "print"
  33.                 switch (command) {
  34.                     case "add":
  35.                         numbers = add.apply(numbers);
  36.                         break;
  37.                     case "multiply":
  38.                         numbers = multiply.apply(numbers);
  39.                         break;
  40.                     case "subtract":
  41.                         numbers = subtract.apply(numbers);
  42.                         break;
  43.                     case "print":
  44.                         print.accept(numbers);
  45.                         System.out.println();
  46.                         break;
  47.                 }
  48.  
  49.             command = scanner.nextLine();
  50.         }
  51.  
  52.     }
  53. }
  54.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement