Вы получите java.util.NoSuchElementException
, когда попытаетесь вызвать nextInt
, когда нет такого элемента, который вы ввели.Эту проблему можно избежать, воспользовавшись функцией check с помощью вызова метода экземпляра сканера hasNextInt
.Я думаю, что проблема связана с вашей операцией деления, где вы должны проверить, что делитель равен 0 вместо делимого, и принимать только новое значение делителя вместо обоих.
Несколько вещей о вашем коде:
а.Вы создаете временный объект в течение цикла.Вы можете создать их вне цикла.
b.Вам не нужно закрывать сканер, если вы используете конструкцию try with resource
, которая доступна с JDK 7.
c.Если вы когда-нибудь захотите закрыть сканер, вы должны закрыть его в блоке finally, где это может произойти, вы получите исключение, и вы можете получить утечку ресурса.
d.Ваше первое условие if для проверки option == 5
должно быть после цикла while while(option>=6 || option<=0){
Подводя итог, это может быть код для решения вашей проблемы:
public static void main(String[] args) {
add addobj= new add();//Use camel case naming convention for classes
subtract subobj= new subtract();
multiplication mulobj= new multiplication();
division divobj= new division();
try(Scanner input = new Scanner(System.in)) {
for(int i=0; i<=4;i++) {
System.out.println("1.ADDITION\n2.SUBTRACTION\n3.MULTIPLICATION\n4.DIVISION\n5.EXIT");
System.out.print("Choose Your Operator:");
int option= input.nextInt();
while(option>=6 || option<=0){
System.out.println("Please select one(1) to five(5).");
option= input.nextInt();
}
if(option==5)
return;
System.out.println("Enter two number:");
int number1= input.nextInt();
int number2=input.nextInt();
switch(option) {
case 1:
System.out.println("Addition:"+"("+ number1 +") + ("+ number2 +") = "+ addobj.result(number1,number2));
break;
case 2:
System.out.println("Subtraction:"+"("+ number1 +") - ("+ number2 +") = "+ subobj.result(number1,number2));
break;
case 3:
System.out.println("Multiplication:"+"("+ number1 +") * ("+ number2 +") = "+ mulobj.result(number1,number2));
break;
case 4:
while(number2==0){
System.out.println("Please enter non-zero value of second number:");
number2= input.nextInt();
}
System.out.println("Division:"+ "("+ number1 +") / ("+ number2 +") = "+ divobj.result(number1,number2));
break;
}
System.out.println("\n");
}
}
}