import java.util.Scanner;
/**
* @author SUBHA FAIRUZ
*
*/
public class calculation {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
for( i=0; i<=4;i++) {
System.out.println("1.ADDITION\n2.SUBTRACTION\n3.MULTIPLICATION\n4.DIVISION\n5.EXIT");
System.out.print("Choose Your Operator:");
Scanner input = new Scanner(System.in);
int option= input.nextInt();
if(option==5)
System.exit(0);
while(option>=6 || option<=0){
System.out.println("Please select one(1) to five(5).");
option= input.nextInt();
}
add addobj= new add();
subtract subobj= new subtract();
multiplication mulobj= new multiplication();
division divobj= new division();
if(option!=5)
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(number1==0){
System.out.println("Please enter non-zero value of first number:");
number1= input.nextInt();
number2= input.nextInt();
}
System.out.println("Division:"+ "("+ number1 +") / ("+ number2 +") = "+ divobj.result(number1,number2));
break;
case 5:
System.exit(0);
//break;
default:
break;
}
System.out.println("\n");
input.close();
}
return ;
}
}
答案 0 :(得分:0)
java.util.NoSuchElementException是一个RuntimeException,可以由Java中的不同类(例如Iterator,Enumerator,Scanner或StringTokenizer)抛出。
如果基础数据结构中没有任何元素,则所有这些类都具有获取下一个元素或下一个标记的方法,Java抛出“ java.util.NoSuchElementException”。
在不检查是否有任何元素的情况下遍历hashmap的最常见示例,这就是为什么建议在对Iterator调用next()之前使用hashNext()的原因。
在for循环外初始化扫描仪
Scanner input = new Scanner(System.in);
for( i=0; i<=4;i++) {
}
关闭扫描仪以进行循环。
for( i=0; i<=4;i++) {
}
input.close();
Scanner类可以预先读取数据流以提供更好的性能。可以在这里发布。
答案 1 :(得分:0)
在没有输入任何元素的情况下尝试调用java.util.NoSuchElementException
时,将得到nextInt
。您可以通过在扫描程序实例方法hasNextInt
上使用方法调用check来避免此问题。我认为问题出在您的除法运算中,您应检查除数是否为0而不是红利,并且只取除数的新值而不是两个值。
关于您的代码的事情:
a。您正在for循环中创建临时对象。您可以在循环之外创建它们。
b。如果使用从JDK 7开始可用的try with resource
构造,则无需关闭扫描仪。
C。如果您想关闭扫描仪,则应在finally块中将其关闭,以防发生异常并最终导致资源泄漏。
d。检查option == 5
的第一个if条件应该是在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");
}
}
}