class Exceptions {
public String checkExceptions(double n1, double n2, char op) throws DivideByZeroException, MultiplyByZeroException{
try {
if(op == '/' && n2==0) {
throw new DivideByZeroException();
}
else if(op=='*' && (n1==0 || n2==0)) {
throw new MultiplyByZeroException();
}
else {
return "No exception found";
}
}
catch (DivideByZeroException ex) {
return "Division by zero results in infinity";
}
catch(MultiplyByZeroException ex) {
return "Multiplying by zero";
}
catch(Exception ex) {
return op+" not a valid operator";
}
}
public double calculate(double v1, double v2, char op) throws Exception{ //Error: This method must return a result of type double
try{
checkExceptions(v1, v2, op); //This might be wrong place to put the method. Don't know how to check if this method throws an exception or not.
if(op=='+') {
return v1+v2;
}
else if(op=='-') {
return v1-v2;
}
else{
return 0.0;
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
class DivideByZeroException extends Exception{
DivideByZeroException(){
super();
}
}
class MultiplyByZeroException extends Exception{
MultiplyByZeroException(){
super();
}
}
main方法接受输入(2个数字和一个运算符(“+”或“-”或“/”或“*”),并将其传递给calculate方法。计算方法应检查是否有异常,如果没有异常,则将计算值返回到主函数v1+v2或v1-v2;否则,如果存在异常,则应打印错误语句,并且从calculate方法返回到main方法的值应为0.0(未打印)。
3条答案
按热度按时间q7solyqu1#
你可以在下面的方式尝试,应该工作得很好。您甚至可以覆盖异常构造函数,从异常传递错误消息,并在捕获异常的位置打印e.getmessage()。我刚刚给你简单的消息打印工作代码。
chhqkbe12#
你可以这样做
我已经在代码中写了足够的注解,这样您就可以很容易地理解它。
输出:
anhgbhbe3#
upd:我犯了一个你应该用的错误
相反
你可以用
Exception(String message)
为你的例外建造师。另外,我认为应该使用enum来表示运算符