Advertisement
lithie_oce

Lab4task2

Feb 27th, 2024
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.19 KB | Source Code | 0 0
  1. import java.util.Scanner;
  2. import java.util.NoSuchElementException;
  3. import java.io.*;
  4.  
  5. public class Main {
  6.     private static final Scanner scan = new Scanner(System.in);
  7.  
  8.     public static int choiceCheck() {
  9.         int choice;
  10.         choice = 0;
  11.         boolean isIncorrect;
  12.         do {
  13.             isIncorrect = false;
  14.             try {
  15.                 choice = Integer.parseInt(scan.nextLine());
  16.             } catch (Exception err) {
  17.                 System.out.println("Error! Input a number");
  18.                 isIncorrect = true;
  19.             }
  20.             if (!isIncorrect && (choice < 1 || choice > 2)) {
  21.                 System.out.println("Error! Input 1 or 2");
  22.                 isIncorrect = true;
  23.             }
  24.  
  25.         } while (isIncorrect);
  26.         return choice;
  27.     }
  28.  
  29.     public static int inputCheck() {
  30.         boolean isIncorrect;
  31.         int n;
  32.         n = 0;
  33.         System.out.println("Input n");
  34.         do {
  35.             isIncorrect = false;
  36.             try {
  37.                 n = Integer.parseInt(scan.nextLine());
  38.             } catch (Exception err) {
  39.                 System.out.println("Error! Input a number");
  40.                 isIncorrect = true;
  41.             }
  42.             if (!isIncorrect && (n < 1)) {
  43.                 System.out.println("Error! Input a number greater than 0");
  44.                 isIncorrect = true;
  45.             }
  46.         } while (isIncorrect);
  47.         return n;
  48.     }
  49.  
  50.     public static int[] inputCheckArray(int n, int[] arr) {
  51.         int i;
  52.         boolean isIncorrect;
  53.         for (i = 0; i < n; i++) {
  54.             do {
  55.                 isIncorrect = false;
  56.                 try {
  57.                     arr[i] = Integer.parseInt(scan.nextLine());
  58.                 } catch (Exception err) {
  59.                     System.out.println("Error! Input a number");
  60.                     isIncorrect = true;
  61.                 }
  62.             } while (isIncorrect);
  63.         }
  64.         return arr;
  65.     }
  66.  
  67.     public static String checkInputFilePath() {
  68.         String path;
  69.         boolean isIncorrect;
  70.         do {
  71.             System.out.println("Input path to the file:");
  72.             isIncorrect = false;
  73.             path = scan.nextLine();
  74.             File inputFile = new File(path);
  75.             if (!inputFile.exists()) {
  76.                 isIncorrect = true;
  77.                 System.out.println("Could not find the file");
  78.             } else if ((!inputFile.canRead()) || (!inputFile.canWrite())) {
  79.                 isIncorrect = true;
  80.                 System.out.println("Could not open the file");
  81.             }
  82.         } while (isIncorrect);
  83.         return path;
  84.     }
  85.  
  86.  
  87.     public static int[] fileCheckArray(int n) {
  88.         String path;
  89.         boolean isIncorrect;
  90.         int i, j, n1, c;
  91.         int[] arr;
  92.         do {
  93.             isIncorrect = false;
  94.             path = checkInputFilePath();
  95.             File inputFile = new File(path);
  96.             Scanner scan2 = null;
  97.             try {
  98.                 scan2 = new Scanner(inputFile);
  99.             } catch (FileNotFoundException e) {
  100.                 throw new RuntimeException(e);
  101.             }
  102.             try {
  103.                 n = scan2.nextInt();
  104.             } catch (Exception e) {
  105.                 isIncorrect = true;
  106.                 System.out.print("The data is incorrect");
  107.             }
  108.             if ((!isIncorrect) && (n < 2)) {
  109.                 isIncorrect = true;
  110.                 System.out.println("The data is incorrect");
  111.             }
  112.             arr = new int[n];
  113.             try {
  114.                 for (i = 0; i < n; i++) {
  115.                     arr[i] = scan2.nextInt();
  116.                 }
  117.             } catch (NoSuchElementException e) {
  118.                 System.out.println("The data is incorrect\n");
  119.                 isIncorrect = true;
  120.                 scan2.close();
  121.             }
  122.         } while (isIncorrect);
  123.  
  124.         return arr;
  125.     }
  126.  
  127.  
  128.     public static int[] inputChoice(int n) {
  129.         int choice;
  130.         int[] arr;
  131.         System.out.println("Choose input option:\n1.Input through console\n2.Input through file");
  132.         choice = choiceCheck();
  133.         if (choice == 1) {
  134.             n = inputCheck();
  135.             arr = new int[n];
  136.             arr = inputCheckArray(n, arr);
  137.         } else {
  138.             arr = fileCheckArray(n);
  139.         }
  140.         return arr;
  141.     }
  142.  
  143.     public static String checkOutputFilePath() {
  144.         String path;
  145.  
  146.         System.out.println("Input file path and the name of the file for\nexample С:\\Projects\\Number\\FileName.txt. If the\nfile does not exist, then it will be created\nautomatically in the given directory");
  147.         path = scan.nextLine();
  148.         File outputFile = new File(path);
  149.         if (outputFile.isFile()) {
  150.             if (!outputFile.canRead()) {
  151.                 System.out.println("Could not open the file");
  152.             }
  153.         }
  154.         return path;
  155.     }
  156.  
  157.  
  158.     public static int findMax(int[] arr, int max, int i) {
  159.         if (i == 0){
  160.             return max;
  161.         }
  162.         else{
  163.             if (max < arr[i]){
  164.                     max = arr[i];
  165.                     return findMax(arr, arr[i], i-1);
  166.             }else {
  167.                 return findMax(arr, max, i - 1);
  168.             }
  169.         }
  170.     }
  171.  
  172.     public static void outputMax(int max) {
  173.         System.out.println(max);
  174.     }
  175.  
  176.     public static void outputFile(int max) {
  177.         String path;
  178.         path = checkOutputFilePath();
  179.         try (PrintWriter pw = new PrintWriter((path))) {
  180.             pw.print(max);
  181.         } catch (IOException ex) {
  182.             System.out.println("Unsuccessful output");
  183.         }
  184.     }
  185.  
  186.     public static void outputChoice(int max) {
  187.         int choice;
  188.         System.out.println("Choose output option:\n1.Output through console\n2.Output through file");
  189.         choice = choiceCheck();
  190.         if (choice == 1) {
  191.             outputMax(max);
  192.         } else {
  193.             outputFile(max);
  194.         }
  195.         scan.close();
  196.     }
  197.  
  198.  
  199.     public static void main(String[] args) {
  200.         int[] arr;
  201.         int n, max;
  202.         n = 0;
  203.         arr = inputChoice(n);
  204.         n = arr.length-1;
  205.         max = findMax(arr, arr[n], n);
  206.         outputChoice(max);
  207.     }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement