Обработка деления на ноль try catch
Есть простенький калькулятор, но никак не могу именно в нем сделать обработку исключения деления на ноль. Я не знаю, где ловить ArithmeticException. Я знаю, как обработать это исключение, но я не знаю как сделать это именно в моем калькуляторе.
case '/':
try {
result = num1 / num2;
} catch (ArithmeticException e) {
System.out.println("division by zero");
}
Вот весь код:
public class Try {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int num1 = getInt();
int num2 = getInt();
char operation = getOperation();
int result = calc(num1, num2, operation);
System.out.println("Result of operation: " + result);
}
// Читання числа і перевірка на цілочисельність
public static int getInt() {
System.out.println("Enter number: ");
int num;
if (scanner.hasNextInt()) {
num = scanner.nextInt();
} else {
System.out.println("Wrong number, try again.");
scanner.next();
num = getInt();
}
return num;
}
// Вибір операції, повідомити, якщо символ неправильний
public static char getOperation() {
System.out.println("Choose operation + - * / ");
char operation;
if (scanner.hasNext()) {
operation = scanner.next().charAt(0);
} else {
System.out.println("Wrong operation, try again + - * /");
scanner.next();
operation = getOperation();
}
return operation;
}
//Обчислення, на основі введених чисел і вибраної операції
public static int calc(int num1, int num2, char operation) {
int result;
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
try {
result = num1 / num2;
} catch (ArithmeticException e) {
System.out.println("division by zero");
}
break;
default:
System.out.println("Wrong operation, try again.");
result = calc(num1, num2, getOperation());
}
return result;
}
}
Ответы (2 шт):
Автор решения: DeMmAge
→ Ссылка
package com.company;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Try {
private Scanner scanner = new Scanner(System.in);
private static final String FORMAT = "Result of operation: %d";
private static final String ENTER_NUMBER = "Enter number: ";
public void main() {
int num1 = 0;
int num2 = 0;
char operation = '0';
try {
System.out.print(ENTER_NUMBER);
num1 = scanner.nextInt();
System.out.print(ENTER_NUMBER);
num2 = scanner.nextInt();
System.out.print("Choose operation + - * / : ");
operation = scanner.next().charAt(0);
} catch (InputMismatchException e) {
System.out.println("Wrong input");
}
switch (operation) {
case '+':
System.out.printf(FORMAT, num1 + num2);
break;
case '-':
System.out.printf(FORMAT, num1 - num2);
break;
case '*':
System.out.printf(FORMAT, num1 * num2);
break;
case '/':
try {
System.out.printf(FORMAT, num1 / num2);
} catch (ArithmeticException e) {
System.out.println("division by zero");
}
break;
default:
System.out.println("Wrong operation, try again.");
break;
}
}
}
Автор решения: Мирлан Дарибаев
→ Ссылка
import java.util.Scanner;
public class Examen {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num1 = getInt();
int num2 = getInt();
char operation = getOperation();
int result = calc(num1, num2, operation);
System.out.println("Результат операции: " + result);
}
public static int getInt() {
System.out.println("Напишите значение: ");
int num;
if (scanner.hasNextInt()) {
num = scanner.nextInt();
} else {
System.out.println("Неправильно, введите ещё раз.");
scanner.next();
num = getInt();
}
return num;
}
public static char getOperation() {
System.out.println("Выберите операцию + - * / ");
char operation;
if (scanner.hasNext()) {
operation = scanner.next().charAt(0);
} else {
System.out.println("Неправильно, введите ещё раз. + - * /");
scanner.next();
operation = getOperation();
}
return operation;
}
public static int calc(int num1, int num2, char operation) {
int result = 0;
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
try {
result = num1 / num2;
} catch (ArithmeticException e) {
System.out.println("на ноль делить нельзя.");
}
break;
default:
System.out.println("Неправильно введите ещё раз.");
result = calc(num1, num2, getOperation());
}
return result;
}
}