Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.util.Scanner;
- import java.util.TreeSet;
- public class Main {
- static Scanner scanner;
- static TreeSet<Byte> inputSetFromConsole() {
- int n = 0;
- byte k = 0;
- TreeSet<Byte> setOfNumbers = new TreeSet<>();
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.print("Введите количество элементов которые будут находиться в множестве(максимум 20): ");
- try {
- n = Integer.parseInt(scanner.nextLine());
- } catch (Exception ex) {
- System.out.println("Ошибка! Введено не число! Пожалуйста, повторите попытку");
- isIncorrect = true;
- }
- if ((n > 20) && !isIncorrect) {
- System.out.println("Количество элементов в множестве не должно превышать 20!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- for (int i = 0; i < n; i++) {
- do {
- isIncorrect = false;
- System.out.println("Введите " + i + "-й элемент множества: ");
- try {
- k = Byte.parseByte(scanner.nextLine());
- } catch (Exception ex) {
- System.out.println("Ошибка! Введено не число! Пожалуйста, повторите попытку");
- isIncorrect = true;
- }
- setOfNumbers.add(k);
- }
- while (isIncorrect);
- }
- return setOfNumbers;
- }
- static TreeSet<Byte> inputSetFromFile(String path) throws FileNotFoundException {
- int n = 0;
- byte k = 0;
- TreeSet<Byte> setOfNumbers = new TreeSet<>();
- File file = new File(path);
- Scanner fileScanner = new Scanner(file);
- n = Byte.parseByte(fileScanner.nextLine());
- for (int i = 0; i < n; i++) {
- k = Byte.parseByte(fileScanner.nextLine());
- setOfNumbers.add(k);
- }
- return setOfNumbers;
- }
- static byte chooseSource() {
- boolean isIncorrect;
- byte source = 0;
- System.out.println("Выберите, как будет осуществлятся ввод и вывод данных, через файл или консоль.");
- System.out.print("Пожалуйста, сделайте выбор(1 - файл; 2 - консоль): ");
- do {
- isIncorrect = false;
- try {
- source = Byte.parseByte(scanner.nextLine());
- } catch (Exception ex) {
- isIncorrect = true;
- System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
- }
- if (source != 1 && source != 2 && !isIncorrect) {
- isIncorrect = true;
- System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
- }
- } while (isIncorrect);
- return source;
- }
- static String inputPathToFile() {
- boolean isIncorrect;
- String path;
- do {
- isIncorrect = false;
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- isIncorrect = true;
- System.out.print("Файл не найден! Введите правильную ссылку: ");
- }
- } while (isIncorrect);
- return path;
- }
- static TreeSet<Byte> input(byte source) throws FileNotFoundException {
- TreeSet<Byte> setOfNumbers = new TreeSet<>();
- String path;
- switch (source) {
- case 1:
- System.out.print("Введите ссылку на файл ввода: ");
- path = inputPathToFile();
- setOfNumbers = inputSetFromFile(path);
- break;
- case 2:
- setOfNumbers = inputSetFromConsole();
- break;
- }
- return setOfNumbers;
- }
- static double calculateArithmetic(TreeSet<Byte> setOfNumbers) {
- double averageArithmetic;
- int sumOfNumbers = 0, amountOfNumbers = 0;
- for (byte k : setOfNumbers) {
- sumOfNumbers += k;
- amountOfNumbers++;
- }
- averageArithmetic = sumOfNumbers / amountOfNumbers;
- return averageArithmetic;
- }
- static void printAverageArithmeticToConsole(double averageArithmetic) {
- System.out.printf("%5.2f", averageArithmetic);
- }
- static void printAverageArithmeticToFile(String path, double averageArithmetic) throws IOException {
- FileWriter fileWriter = new FileWriter(path);
- fileWriter.write(String.format("%5.2f", averageArithmetic));
- fileWriter.close();
- }
- static void print(byte source, double averageArithmetic) throws IOException {
- String path;
- switch (source) {
- case 1:
- System.out.print("Введите ссылку на файл вывода: ");
- path = inputPathToFile();
- printAverageArithmeticToFile(path, averageArithmetic);
- System.out.print("Данные успешно записаны в файл!");
- break;
- case 2:
- printAverageArithmeticToConsole(averageArithmetic);
- break;
- }
- }
- public static void main(String[] args) throws IOException {
- scanner = new Scanner(System.in);
- byte source = chooseSource();
- TreeSet<Byte> set = input(source);
- double averageArithmetic = calculateArithmetic(set);
- print(source, averageArithmetic);
- }
- }
Add Comment
Please, Sign In to add comment