Файл RadixIO java Назначение Класс для управления вводом выводом консо

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
* Файл: RadixIO.java
* Назначение: Класс для управления вводом/выводом в консоль и для управления самой программой, проверки введённых данных. Основа программы.
*/
package radixarithmetic; // класс содержится в пакете radixarithmetic
import java.io.BufferedReader; // подключаем класс для чтения буфера данных
import java.io.InputStreamReader; // подключаем класс для чтения потока ввода(input) данных
import java.io.IOException; // подключаем класс для управления исключительными ситуациями ввода/вывода
public class RadixIO { // объявление класса RadixIO
RadixIO() { // конструктор класса
System.out.println("--- RadixArithmetic ---\n"); // System.out.println - вывод строки в консоль с переносом строки в конце, \n - перенос строки
System.out.println("Введите 'q' в любое поле для ввода и нажмите <Enter> для выхода\n----------\n");
this.process(); // вызываем метод process текущего класса
}
private void process() {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); // читаем буфер данных из System.in (input поток)
String one_dix = null, two_dix = null, result_dix = null; // переменные для хранения систем счисления первого и второго числа, а так же системы счисления результата
String one_num = null, two_num = null; // для хранения первого и второго числа
RadixCore core = new RadixCore();
String yn = null; // завершить или продолжать работу программы
do {
do {
System.out.print("Система счисления первого числа(2, 8, 16): "); // System.out.print - вывод строки в консоль без переноса строки в конце
try { // try-catch предназначен для проверки кода на наличие исключительных ситуаций
one_dix = read.readLine(); // BufferedReader.readLine() - читает строку из буффера данных
}catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
this.checkExit(one_dix); // проверяем нужно ли выйти
if(this.checkRadix(one_dix)) // если система счисления поддерживается
break; // тогда продолжаем
else // иначе
System.out.println("Неверная система счисления. Поддерживаются: 2, 8, 16");
} while(true); // бесконечный цикл (для проверки введённых данных)
do {
System.out.print("Система счисления второго числа(2, 8, 16): ");
try {
two_dix = read.readLine();
}catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
this.checkExit(two_dix);
if(this.checkRadix(two_dix))
break;
else
System.out.println("Неверная система счисления. Поддерживаются: 2, 8, 16");
} while(true);
do {
System.out.print("Система счисления результата(2, 8, 16): ");
try {
result_dix = read.readLine();
}catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
this.checkExit(result_dix);
if(this.checkRadix(result_dix))
break;
else
System.out.println("Неверная система счисления. Поддерживаются: 2, 8, 16");
} while(true);
do {
System.out.print("Первое число (" + (one_dix.equals("2") ? "двоичная" : (one_dix.equals("8") ? "восьмиричная" : "шестнадцатиричная")) + " система): ");
try {
one_num = read.readLine();
}catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
this.checkExit(one_num);
if(one_dix.equals("2") ? core.checkBinary(one_num) : (one_dix.equals("8") ? core.checkOctal(one_num) : core.checkHex(one_num)))
break;
else
System.out.println("Число не соответствует формату заданной системы счисления!");
} while(true);
do {
System.out.print("Второе число (" + (two_dix.equals("2") ? "двоичная" : (two_dix.equals("8") ? "восьмиричная" : "шестнадцатиричная")) + " система): ");
try {
two_num = read.readLine();
}catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
this.checkExit(two_num);
if(two_dix.equals("2") ? core.checkBinary(two_num) : (two_dix.equals("8") ? core.checkOctal(two_num) : core.checkHex(two_num)))
break;
else
System.out.println("Число не соответствует формату заданной системы счисления!");
} while(true);
System.out.println("----------");
System.out.print("Результат (" + (result_dix.equals("2") ? "двоичная" : (result_dix.equals("8") ? "восьмиричная" : "шестнадцатиричная")) + " система): залупа\n\nЖелаете выполнить ещё одну операцию? y/n: ");
try {
yn = read.readLine();
} catch(IOException io) {
System.out.println("Ошибка ввода/вывода.");
}
} while(yn.equalsIgnoreCase("y"));
}
private void checkExit(String str) { // проверка выхода из программы
if(str.equalsIgnoreCase("q")) // str1.equalsIgnoreCase(String two) - сравнение строк str1 и two c игнорированием регистра
System.exit(0); // завершение работы программы
}
private boolean checkRadix(String dix) { // проверка системы счисления
return dix.equals("2") || dix.equals("8") || dix.equals("16");
}
}