Advertisement
Anton0093

JAVA_2

Mar 1st, 2020
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.18 KB | None | 0 0
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.Scanner;
  6. import static java.lang.Math.*;
  7. class CaseMenuTest {
  8.     public static void main(String[] args) throws ParseException {
  9.         System.out.println("Реализация меню на языке джава");
  10.         new CaseMenu (new Scanner(System.in)).start();
  11.     }
  12. }
  13.  
  14. //////////////////////////////////
  15. class CaseMenu {
  16.     private final Scanner scanner;
  17.  
  18.     public CaseMenu(Scanner scanner) {
  19.         this.scanner = scanner;
  20.     }
  21.  
  22.     private void printMenu() {
  23.         System.out.println("1. Вывод Hello world ;");
  24.         System.out.println("2. Подсчет формулы (y-(sqrt(x)/z);");
  25.         System.out.println("3. Функция Аккермана;");
  26.     }
  27.  
  28.     public void start() throws ParseException {
  29.         double dFirst_number = 0.0;
  30.         double dSecond_number = 0.0;
  31.         double dThird_number = 0.0;
  32.         if (this.scanner != null) {
  33.             do {
  34.                 printMenu();
  35.                 System.out.print("Введите номер меню: ");
  36.  
  37.                 while (!this.scanner.hasNextInt()) {
  38.                     System.out.println("Введите число 0, 1, 2, 3");
  39.                     this.scanner.next();
  40.                 }
  41.  
  42.                 int key = this.scanner.nextInt();
  43.  
  44.                 switch (key) {
  45.                     case 0:
  46.                         return;
  47.                     case 1:
  48.                         print_hello();
  49.                         break;
  50.                     case 2:
  51.                         formula(this.scanner, dFirst_number, dSecond_number, dThird_number);
  52.                         break;
  53.                     case 3:
  54.                         recursion_date();
  55.                         break;
  56.                     default:
  57.                         System.out.println("Вы ввели неверное значение меню...\n");
  58.                 }
  59.             } while (true);
  60.         }
  61.     }
  62.  
  63.     private void print_hello() {
  64.         System.out.println("Hello world");
  65.     }
  66.  
  67.     private void formula(Scanner in, double x, double y, double z) {
  68.         System.out.print("Введите x: ");
  69.         double k;
  70.         while (in.hasNext()) {
  71.             if (in.hasNextDouble()) {
  72.                 if ((k = in.nextDouble()) > 0) {
  73.                     x = k;
  74.                     break;
  75.                 } else
  76.                     System.out.println("Введите положительное число, отличное от нуля число");
  77.             } else {
  78.                 System.out.println("Введите число типа double");
  79.             }
  80.             in.nextLine();
  81.         }
  82.  
  83.         System.out.print("Введите y: ");
  84.         while (in.hasNext()) {
  85.             if (in.hasNextDouble()) {
  86.                 if ((k = in.nextDouble()) >= 0) {
  87.                     y = k;
  88.                     break;
  89.                 } else
  90.                     System.out.println("Введите положительное число");
  91.             } else {
  92.                 System.out.println("Введите число типа double");
  93.             }
  94.             in.nextLine();
  95.         }
  96.  
  97.         System.out.print("Введите z: ");
  98.         while (in.hasNext()) {
  99.             if (in.hasNextDouble()) {
  100.                 if ((k = in.nextDouble()) != 0) {
  101.                     z = k;
  102.                     break;
  103.                 } else
  104.                     System.out.println("Введите число, отличное от нуля");
  105.             } else {
  106.                 System.out.println("Введите число типа double");
  107.             }
  108.             in.nextLine();
  109.         }
  110.         double F = (y - (sqrt(x) / z));
  111.         System.out.printf("Ответ: %.3f %n", F);
  112.     }
  113.  
  114.     private static final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy");
  115.  
  116.     static {
  117.         DATE_FORMAT.setLenient(true);
  118.     }
  119.  
  120.     private static boolean isValid(String date) {
  121.         try {
  122.             return DATE_FORMAT.format(DATE_FORMAT.parse(date)).equals(date);
  123.         } catch (ParseException ex) {
  124.             return false;
  125.         }
  126.     }
  127.  
  128.     private static Date print_date() throws ParseException {
  129.         String k;
  130.         Scanner in = new Scanner(System.in);
  131.         System.out.println("Введите дату: ");
  132.         String date = in.next();
  133.         while (!isValid(date)) {
  134.             System.out.println("Введите дату правильно: ");
  135.             k = in.next();
  136.             date = k;
  137.         }
  138.         return DATE_FORMAT.parse(date);
  139.     }
  140.  
  141.     private static long segment_search (Date data1, Date data2, Date data3, Date data4) {
  142.         long a1 = data1.getTime();
  143.         long a2 = data2.getTime();
  144.         long a3 = data3.getTime();
  145.         long a4 = data4.getTime();
  146.         long l = Math.min(a2, a4) - Math.max(a1, a3);
  147.         if ((a1 < a3) && (a2 < a4) || ((a1 < a3) && (a2 > a4))) {
  148.             if (a2 < a3 || a1 > a4) {
  149.                 return 0;
  150.             } else {
  151.                 return l;
  152.             }
  153.         } else {
  154.             return 0;
  155.         }
  156.     }
  157.  
  158.     private static long Akkerman_function(int n, long m) {
  159.         if (n == 0)
  160.             return m + 1;
  161.         else if ((n!=0)&&(m==0))
  162.             return Akkerman_function(n - 1, 1);
  163.         else
  164.             return Akkerman_function(n - 1, Akkerman_function(n, m - 1));
  165.     }
  166.  
  167.     private static void print_Akkerman(long segment) {
  168.         System.out.println("Результат отрезка в днях: " + segment / (24 * 60 * 60 * 1000));
  169.         System.out.println("Значение функции Аккермана: " + Akkerman_function(5, segment / (24 * 60 * 60 * 1000)));
  170.     }
  171.  
  172.     private static void recursion_date () throws ParseException {
  173.         Date data1;
  174.         Date data2;
  175.         Date data3;
  176.         Date data4;
  177.         long segment;
  178.         data1 = print_date();
  179.         data2 = print_date();
  180.         data3 = print_date();
  181.         data4 = print_date();
  182.         segment = segment_search(data1, data2, data3, data4);
  183.         print_Akkerman(segment);
  184.     }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement