Advertisement
Vladislav8653

5.1 java

Apr 12th, 2023 (edited)
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.75 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.*;
  5.  
  6. public class Main {
  7.     static Scanner scanner = new Scanner(System.in);
  8.     public static boolean exit = false;
  9.     public static Queue queue = new Queue();
  10.  
  11.     public static void main(String[] args) throws IOException {
  12.         System.out.println("The program demonstrate queue as a data structure.");
  13.         while (!exit) {
  14.             showInfo();
  15.             chooseAction();
  16.         }
  17.     }
  18.  
  19.     public static void showInfo() {
  20.         System.out.println("1 - build an empty queue");
  21.         System.out.println("2 - add a new item to the end of the queue");
  22.         System.out.println("3 - remove an item from the beginning of the queue");
  23.         System.out.println("4 - show queue");
  24.         System.out.println("5 - open queue from file");
  25.         System.out.println("6 - save queue in file");
  26.         System.out.println("7 - exit");
  27.     }
  28.  
  29.     private static int inputData() {
  30.         int n = 0;
  31.         boolean isIncorrect;
  32.         final int MIN_SIZE = 1;
  33.         do {
  34.             isIncorrect = false;
  35.             try {
  36.                 n = Integer.parseInt(scanner.nextLine());
  37.             } catch (Exception e) {
  38.                 isIncorrect = true;
  39.                 System.out.println("Please enter an integer number");
  40.             }
  41.             if (n < MIN_SIZE && !isIncorrect) {
  42.                 System.out.println("Please enter a positive number");
  43.                 isIncorrect = true;
  44.             }
  45.         } while (isIncorrect);
  46.         return n;
  47.     }
  48.  
  49.     public static void chooseAction() throws IOException {
  50.         int chose;
  51.         boolean isIncorrect;
  52.         final int MAX = 7;
  53.         System.out.println("Please, choose:");
  54.         do {
  55.             chose = inputData();
  56.             isIncorrect = false;
  57.             if ((chose > MAX) || (chose < 1)) {
  58.                 isIncorrect = true;
  59.                 System.out.println("Please enter the correct function number.");
  60.             }
  61.         } while (isIncorrect);
  62.  
  63.         switch (chose) {
  64.             case 1 -> buildQueue();
  65.             case 2 -> addNode();
  66.             case 3 -> removeNode();
  67.             case 4 -> showQueue();
  68.             case 5 -> openFile();
  69.             case 6 -> saveData();
  70.             case 7 -> exit = true;
  71.         }
  72.  
  73.     }
  74.  
  75.     public static void buildQueue() {
  76.         queue.createQueue();
  77.         System.out.println("Ready!");
  78.     }
  79.  
  80.  
  81.  
  82.     private static int inputKey() {
  83.         int n = 0;
  84.         boolean isIncorrect;
  85.         do {
  86.             isIncorrect = false;
  87.             try {
  88.                 n = Integer.parseInt(scanner.nextLine());
  89.             } catch (Exception e) {
  90.                 isIncorrect = true;
  91.                 System.out.println("Please enter an integer number");
  92.             }
  93.         } while (isIncorrect);
  94.         return n;
  95.     }
  96.     public static void addNode () {
  97.         System.out.println("Input node:");
  98.         int node = inputKey();
  99.         queue.addNode(node);
  100.         System.out.println("Node \"" + node +"\" added.");
  101.         System.out.println(); // просто пустая строка для удобства чтения
  102.     }
  103.     public static void removeNode () {
  104.         if (queue.getRoot() != null)  {
  105.             int removedNode = queue.deleteNode();
  106.             System.out.println("Node \"" + removedNode + "\" removed.");
  107.         }else {
  108.             System.out.println("Queue is empty.");
  109.         }
  110.         System.out.println(); // просто пустая строка для удобства чтения
  111.     }
  112.     public static String inputFilePath() {
  113.         String path;
  114.         boolean isIncorrect;
  115.         do {
  116.             isIncorrect = false;
  117.             System.out.println("Input file path:");
  118.             path = scanner.nextLine();
  119.             File file = new File(path);
  120.             if (!file.exists()) {
  121.                 System.out.println("Wrong way to file.");
  122.                 isIncorrect = true;
  123.             }
  124.             if (!file.canRead() && file.exists()) {
  125.                 System.out.println("Impossible to read a file.");
  126.                 isIncorrect = true;
  127.             }
  128.             if (!file.canWrite() && file.canRead()) {
  129.                 System.out.println("Impossible to write a file.");
  130.                 isIncorrect = true;
  131.             }
  132.         } while (isIncorrect);
  133.         return path;
  134.     }
  135.  
  136.     public static void showQueue () {
  137.         if (queue.getRoot() != null)  {
  138.             System.out.println(queue.showQueue());
  139.         } else {
  140.             System.out.println("Queue is empty.");
  141.         }
  142.         System.out.println(); // просто пустая строка для удобства чтения
  143.     }
  144.  
  145.  
  146.     public static String[] deleteSpacesInArray (String[] keys) {
  147.         int counterOfSpaces = 0;
  148.         for (int j = 0; j < keys.length; j++) {
  149.             if (!Objects.equals(keys[j], "")) {
  150.                 counterOfSpaces++;
  151.             }
  152.         }
  153.         int i = 0;
  154.         String[] newArr = new String[counterOfSpaces];
  155.         for (int j = 0; j < keys.length; j++) {
  156.             if (!Objects.equals(keys[j], "")) {
  157.                 newArr[i] = keys[j];
  158.                 i++;
  159.             }
  160.         }
  161.         return newArr;
  162.     }
  163.     public static boolean checkArrayOfStrings (String[] keys) {
  164.         for (int j = 0; j < keys.length; j++){
  165.             try {
  166.                 Integer.parseInt(keys[j]);
  167.             } catch (Exception e) {
  168.                 System.out.println("Check file, it shouldn't contains smth except numbers.");
  169.                 return false;
  170.             }
  171.         }
  172.         return true;
  173.     }
  174.  
  175.     public static int[] getArrOfKeys (String[] keys) {
  176.         int[] keysFromFile = new int[keys.length];
  177.         for (int j = 0; j < keys.length; j++) {
  178.             keysFromFile[j] = Integer.parseInt(keys[j]);
  179.         }
  180.         return keysFromFile;
  181.     }
  182.  
  183.     public static void openFile() {
  184.         System.out.println("Example of string with nodes:");
  185.         System.out.println("node1 - node2 - node3 - ... - nodeN");
  186.         System.out.println("P.S. after every position expected only space");
  187.         String path = inputFilePath();
  188.         String str;
  189.         String[] mas;
  190.         try {
  191.             Scanner fileReader = new Scanner(new File(path));
  192.             str = fileReader.nextLine();
  193.             mas = str.split(" ");
  194.             mas = deleteSpacesInArray(mas);
  195.             if (checkArrayOfStrings(mas)) {
  196.                 int[] keysFromFile = getArrOfKeys(mas);
  197.                 for (int j = 0; j < keysFromFile.length; j++) {
  198.                     queue.addNode(keysFromFile[j]);
  199.                 }
  200.                 System.out.println("Ready!");
  201.             }
  202.         } catch (Exception q) {
  203.             System.out.println("Something went wrong, check file.");
  204.         }
  205.     }
  206.     public static void saveData () throws IOException {
  207.         if (queue.getRoot() != null)  {
  208.             String path = inputFilePath();
  209.             FileWriter writer = new FileWriter(path);
  210.             writer.write(queue.showQueue());
  211.             writer.close();
  212.             System.out.println("Ready!");
  213.         } else {
  214.             System.out.println("Queue is empty.");
  215.         }
  216.     }
  217. }
  218.  
  219. ======================================================class2======================================================
  220. public class Queue {
  221.     private int key;
  222.  
  223.     private Queue nextNode;
  224.  
  225.     public Queue getRoot() {
  226.         return nextNode;
  227.     }
  228.  
  229.     public void createQueue() {
  230.         nextNode = null;
  231.     }
  232.  
  233.     public void addNode(int value) {
  234.         Queue newNode = new Queue();
  235.         newNode.key = value;
  236.         if (this.nextNode == null) {
  237.             this.nextNode = newNode;
  238.         } else {
  239.             Queue currentNode = this.nextNode;
  240.             while (currentNode.nextNode != null) {
  241.                 currentNode = currentNode.nextNode;
  242.             }
  243.             currentNode.nextNode = newNode;
  244.         }
  245.     }
  246.  
  247.     public int deleteNode() {
  248.         int nodeToDelete = this.nextNode.key;  // сохраняем значение первого элемента
  249.         this.nextNode = this.nextNode.nextNode;  // переопределяем начало очереди
  250.         return nodeToDelete;  // возвращаем удаленный элемент
  251.     }
  252.  
  253.     public String showQueue () {
  254.         Queue currentNode = this.nextNode;
  255.         String result = "[ ";
  256.         while (currentNode != null) {
  257.             result = result + currentNode.key ;
  258.             if (currentNode.nextNode != null){
  259.                 result = result + " - ";
  260.             }
  261.             currentNode = currentNode.nextNode;
  262.         }
  263.         result = result + " ]";
  264.         return result;
  265.     }
  266. }
  267.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement