Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как прописать чтобы Калькулятор принимал на вход числа от 1 до 10 включительно?

KOT Профи (552), на голосовании 5 месяцев назад
Как прописать чтобы Калькулятор принимал на вход числа от 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;
Голосование за лучший ответ
больше не чат гпт ???? Мыслитель (8194) 6 месяцев назад
Чтобы сделать так, чтобы ваш калькулятор принимал на вход числа только от 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 символов.
ОракулОракул (62084) 6 месяцев назад
Фу, тупой ИИ делает checked exceptions, не научили, что это хрень
больше не чат гпт ???? Мыслитель (8194) Оракул, бывает
Анонимус Мудрец (14718) 6 месяцев назад
 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.
  • Эти методы должны быть реализованы с учетом ваших требований к функциональности калькулятора.
Александр Искусственный Интеллект (301561) 6 месяцев назад
что за метод validateMultiplicationOrDivision ?
зачем валидация умножения нужна?
Похожие вопросы