среда, 25 декабря 2013 г.

Красота-то какая


import java.io.Console;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Scanner;
 
public class ConsoleApplication {
 
    private static final ArrayList<Integer> numArray = new ArrayList<Integer>(5);
    private static File outputFile;
 
    private static Console console;
    private static Scanner scanner;
 
    private static final String taskStr = "Вычислить среднее арифмитическое чисел вводимых с клавиатуры (использовать Arraylist).\nРезультат записать в файл.\n\n",
            fileRequestText = "Файл с результатом программы. Введите имя файла: ",
            requestCycleInfo = "Введите чило, после ввода нажмите Enter.\n"
            + "+++Для вывода на экран результата введите show.\n"
            + "+++Для выхода и записи результата в файл введите exit.\n",
            requestCycleText = "Ввод: ";
 
    public static void main(String args[]) {
        System.out.println("Задание: Вычислить среднее арифмитическое чисел вводимых с клавиатуры (использовать Arraylist).\nРезультат записать в файл.\n");
 
        if ((console = System.console()) != null) {
            System.out.println(" - System.console - ");
            outputFile = new File(console.readLine(fileRequestText));
            System.out.println(requestCycleInfo);
            while (true) {
                doLogic(console.readLine(requestCycleText).toLowerCase());
            }
        } else {
            scanner = new Scanner(System.in);
            System.out.println(" - Scanner (System.in) - ");
            System.out.print(fileRequestText);
            outputFile = new File(scanner.nextLine());
            System.out.println(requestCycleInfo);
            while (true) {
                System.out.print(requestCycleText);
                doLogic(scanner.nextLine().toLowerCase());
            }
        }
    }
 
    // Если JDK\JRE >= 7
    private static void doLogic(String in) {
        switch (in) {
            case "exit":
                save();
                System.out.println("Работа программы завершена. Выход.");
                System.exit(0);
                break;
            case "show":
                System.out.println(getResult());
                break;
            default:
                try {
                    numArray.add(Integer.parseInt(in));
                } catch (NumberFormatException ex) {
                    System.out.println("\nНеверный формат числа, операция проигнорирована!\n");
                }
                break;
        }
    }
 
    // Если JDK\JRE < 7
//    private static void doLogic(String in) {
//        if (in.equals("exit")) {
//            save();
//            System.out.println("Работа программы завершена. Выход.");
//            System.exit(0);
//        } else if (in.equals("show")) {
//            System.out.println(getResult());
//        } else {
//            try {
//                numArray.add(Integer.parseInt(in));
//            } catch (NumberFormatException ex) {
//                System.out.println("\nНеверный формат числа, операция проигнорирована!\n");
//            }
//        }
//    }
    private static void save() {
        try {
            try (FileOutputStream fos = new FileOutputStream(outputFile)) {
                fos.write(getResult().getBytes("UTF-8"));
                fos.flush();
            }
        } catch (FileNotFoundException ex) {
            System.err.println("Файл " + outputFile.getAbsolutePath() + " не найден!");
        } catch (UnsupportedEncodingException ex) {
            System.err.println("Кодировка UTF-8 не поддерживается!");
        } catch (IOException ex) {
            System.err.println("IOException: " + ex.getLocalizedMessage());
        }
    }
 
    private static String getResult() {
        ListIterator<Integer> listIterator = numArray.listIterator();
        Integer summ = 0;
 
        StringBuilder builder = new StringBuilder();
 
        builder.append("Cреднее арифмитическое чисел: \r\n");
 
        while (listIterator.hasNext()) {
            Integer nextVal = listIterator.next();
            summ += nextVal;
            builder.append("    ").append(nextVal).append("\r\n");
 
        }
 
        builder.append("\r\nРавно ").append(summ / numArray.size()).append(",").append(summ % numArray.size());
        return builder.toString();
    }
}

Комментариев нет:

Отправить комментарий