Advertisement
madopew

Untitled

May 7th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.22 KB | None | 0 0
  1. package laba7_2;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.Writer;
  9. import java.util.Scanner;
  10.  
  11. public class Main {
  12.     private static int[][] matrix;
  13.     private static StringBuilder list;
  14.     private static Scanner scanner = new Scanner(System.in);
  15.    
  16.     public static void main(String[] args) {
  17.         displayMainMenu();
  18.     }
  19.    
  20.     private static void displayMainMenu() {
  21.         System.out.println("========");
  22.         System.out.println("LABA 7 2");
  23.         System.out.println("========");
  24.         System.out.println("This program converts adjacent matrix to incident list");
  25.         System.out.println("Choose option by picking a number.");
  26.         System.out.println("1) Input matrix");
  27.         System.out.println("2) Input matrix (file)");
  28.         System.out.println("3) Show list");
  29.         System.out.println("4) Save list");
  30.         System.out.println("5) Exit");
  31.         int picked = 0;
  32.         try {
  33.             picked = Integer.parseInt(scanner.nextLine());
  34.         } catch (Exception e) {
  35.             displayMainMenu();
  36.             return;
  37.         }
  38.         if(picked < 1 || picked > 5) {
  39.             displayMainMenu();
  40.             return;
  41.         }
  42.         switch(picked) {
  43.         case 1:
  44.             inputMatrix();
  45.             return;
  46.         case 2:
  47.             inputMatrixFile();
  48.             return;
  49.         case 3:
  50.             showList();
  51.             return;
  52.         case 4:
  53.             saveList();
  54.             return;
  55.         case 5:
  56.             System.out.println("The program has now terminated.");
  57.             return;
  58.         }
  59.     }
  60.    
  61.     private static void inputMatrix() {
  62.         int amount = inputFunc("amount of vertices", 2, 6);
  63.         matrix = new int[amount][amount];
  64.         for(int i = 0; i < amount; i++) {
  65.             for(int j = 0; j < amount; j++) {
  66.                     int adjacent = inputFunc("adjacent value of vertices " + (i+1) + "-" + (j+1), 0, 10);
  67.                     matrix[i][j] = adjacent;
  68.                 }
  69.             }
  70.         System.out.println("Matrix successfully added.");
  71.         displayMainMenu();
  72.     }
  73.    
  74.     private static void inputMatrixFile() {
  75.         System.out.println("Input location of the file:");
  76.         String line;
  77.         try (BufferedReader br = new BufferedReader(new FileReader(new File(scanner.nextLine())))) {
  78.             line = br.readLine();
  79.             int amount = Integer.parseInt(line);
  80.             matrix = new int[amount][amount];
  81.             for(int i = 0; i < amount; i++) {
  82.                 line = br.readLine();
  83.                 for(int j = 0; j < amount; j++) {
  84.                         int adjacent = line.charAt(j) - '0';
  85.                         matrix[i][j] = adjacent;
  86.                     }
  87.             }
  88.         } catch(Exception e) {
  89.             System.out.println("File was not found.");
  90.             displayMainMenu();
  91.             return;
  92.         }
  93.         System.out.println("Matrix successfully added.");
  94.         displayMainMenu();
  95.     }
  96.    
  97.     private static void showList() {
  98.         if(matrix == null) {
  99.             System.out.println("Nothing to convert");
  100.             displayMainMenu();
  101.             return;
  102.         }
  103.         convertMatrix();
  104.         System.out.println("\n======LIST======");
  105.         System.out.println(list);
  106.         displayMainMenu();
  107.     }
  108.    
  109.     private static void saveList() {
  110.         if(matrix == null) {
  111.             System.out.println("Nothing to save");
  112.             displayMainMenu();
  113.             return;
  114.         }
  115.         if(list == null)
  116.             convertMatrix();
  117.         System.out.println("Input location of the file:");
  118.         try (BufferedWriter bw = new BufferedWriter(new FileWriter(new File(scanner.nextLine()), false))) {
  119.             bw.append(list);
  120.         } catch(Exception e) {
  121.             System.out.println("An error has occured");
  122.             displayMainMenu();
  123.             return;
  124.         }
  125.         System.out.println("File successfully saved");
  126.         displayMainMenu();
  127.     }
  128.    
  129.     private static void convertMatrix() {
  130.         list = new StringBuilder("");
  131.         for(int i = 0; i < matrix.length; i++) {
  132.             list.append((i+1) + ": ");
  133.             for(int j = 0; j < matrix.length; j++) {
  134.                 int amount = matrix[i][j];
  135.                 for(int k = 0; k < amount; k++) {
  136.                     list.append((j+1) + " ");
  137.                 }
  138.             }
  139.             list.append("\n");
  140.         }
  141.     }
  142.    
  143.     private static int inputFunc(String name, int min, int max) {
  144.         boolean incorrect;
  145.         String line;
  146.         int element = 0;
  147.         do {
  148.             incorrect = false;
  149.             System.out.println("Input " + name + ":");
  150.             line = scanner.nextLine();
  151.             try {
  152.                 element = Integer.parseInt(line);
  153.             } catch (Exception e) {
  154.                 incorrect = true;
  155.                 System.out.println("Element should be a numerical value");
  156.             }
  157.             if(element < min || element >= max) {
  158.                 incorrect = true;
  159.                 System.out.printf("Element should be between %d and %d\n", min, max - 1);
  160.             }
  161.         } while(incorrect);
  162.         return element;
  163.     }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement