Как прописать чтобы Калькулятор принимал на вход числа от 1 до 10 включительно?
Как прописать чтобы Калькулятор принимал на вход числа от 1 до 10 включительно, не более. И строки длинной не более 10 символов
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scn = new Scanner( System.in );
String exp = scn.nextLine();
char action = getAction(exp);
String[] data = getData(exp, action);
if (action == '*' || action == '/') {
validateMultiplicationOrDivision(data[1]);
}
for (int i = 0; i < data.length; i++) {
data[i] = data[i].replace("\"", "");
}
String result = calculateResult(action, data);
printInQuotes(result);
}
static char getAction(String exp) throws Exception {
if (exp.contains(" + ")) {
return '+';
} else if (exp.contains(" - ")) {
return '-';
} else if (exp.contains(" * ")) {
return '*';
} else if (exp.contains(" / ")) {
return '/';
} else {
throw new Exception("Некорректный знак действия");
}
}
static String[] getData(String exp, char action) {
String[] data;
switch (action) {
case '+':
data = exp.split(" \\+ ");
break;
case '-':
data = exp.split(" - ");
break;
case '*':
data = exp.split(" \\* ");
break;
case '/':
data = exp.split(" / ");
break;
default:
data = new String[0];
}
return data;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scn = new Scanner(System.in);
String exp = scn.nextLine();
// Проверка длины строки
if (exp.length() > 10) {
throw new Exception("Строка не должна быть длиннее 10 символов");
}
char action = getAction(exp);
String[] data = getData(exp, action);
// Проверка корректности чисел
for (int i = 0; i < data.length; i++) {
try {
int num = Integer.parseInt(data[i].trim());
if (num < 1 || num > 10) {
throw new Exception("Числа должны быть от 1 до 10 включительно");
}
} catch (NumberFormatException e) {
throw new Exception("Некорректные числа");
}
}
if (action == '*' || action == '/') {
validateMultiplicationOrDivision(data[1]);
}
for (int i = 0; i < data.length; i++) {
data[i] = data[i].replace("\"", "");
}
String result = calculateResult(action, data);
printInQuotes(result);
}
// ... (Остальной код без изменений) ...
}
Изменения:
Проверка длины строки:
Добавлен блок if (exp.length() > 10) для проверки длины строки. Если строка длиннее 10 символов, генерируется исключение.
Проверка корректности чисел:
В цикле for добавлен блок try-catch для обработки потенциальных ошибок преобразования строки в число (NumberFormatException).
Внутри блока try происходит проверка, находится ли число в диапазоне от 1 до 10 включительно. Если нет, генерируется исключение.
Объяснение:Проверка длины строки: Эта проверка гарантирует, что пользователь вводит строку, не превышающую заданный лимит (10 символов).
Проверка корректности чисел: Этот блок кода проверяет, что введенные числа являются целыми и находятся в диапазоне от 1 до 10. Он использует Integer.parseInt() для преобразования строки в целое число и try-catch для обработки возможных исключений.
Важно:
Не забудьте добавить в ваш код методы getAction, getData, validateMultiplicationOrDivision, calculateResult, и printInQuotes.
Эти методы должны быть реализованы с учетом ваших требований к функциональности калькулятора.
Чтобы сделать так, чтобы ваш калькулятор принимал на вход числа только от 1 до 10 включительно, и строки длиной не более 10 символов, вам нужно добавить соответствующие проверки в ваш код. Вот модифицированная версия вашего кода с этими проверками:
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scn = new Scanner(System.in);
String exp = scn.nextLine();
// Проверка длины строки
if (exp.length() > 10) {
throw new Exception("Вводная строка не должна быть длиннее 10 символов");
}
char action = getAction(exp);
String[] data = getData(exp, action);
// Проверка значений чисел
for (String datum : data) {
int number = Integer.parseInt(datum);
if (number < 1 || number > 10) {
throw new Exception("Числа должны быть от 1 до 10 включительно");
}
}
String result = calculateResult(action, data);
printInQuotes(result);
}
static char getAction(String exp) throws Exception {
if (exp.contains(" + ")) {
return '+';
} else if (exp.contains(" - ")) {
return '-';
} else if (exp.contains(" * ")) {
return '*';
} else if (exp.contains(" / ")) {
return '/';
} else {
throw new Exception("Некорректный знак действия");
}
}
static String[] getData(String exp, char action) {
String[] data;
switch (action) {
case '+':
data = exp.split(" \\+ ");
break;
case '-':
data = exp.split(" - ");
break;
case '*':
data = exp.split(" \\* ");
break;
case '/':
data = exp.split(" / ");
break;
default:
data = new String[0];
}
return data;
}
static String calculateResult(char action, String[] data) throws Exception {
int a = Integer.parseInt(data[0]);
int b = Integer.parseInt(data[1]);
int result;
switch (action) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b == 0) {
throw new Exception("Деление на ноль");
}
result = a / b;
break;
default:
throw new Exception("Некорректное действие");
}
return String.valueOf(result);
}
static void printInQuotes(String result) {
System.out.println("\"" + result + "\"");
}
}
В этом коде добавлены следующие проверки:
1. Проверка длины вводной строки: если длина строки больше 10 символов, выбрасывается исключение.
2. Проверка значений чисел: если любое из чисел выходит за пределы от 1 до 10 включительно, выбрасывается исключение.
Таким образом, ваш калькулятор будет работать только с числами в заданном диапазоне и строками не длиннее 10 символов.
что за метод validateMultiplicationOrDivision ?
зачем валидация умножения нужна?