gpt4 book ai didi

Java 异常处理分配

转载 作者:行者123 更新时间:2023-12-02 06:13:50 26 4
gpt4 key购买 nike

所以我最近学习了 Java 的异常处理,我仍在努力适应它,但我觉得我错过了一些东西。我正在为我的类(class)做作业,但编译器不喜欢我的代码。

我应该制作一个计算器,它接受一个运算符,然后接受一个数字,如果给定的运算符(+、-、*、/)不是上述四个运算符之一,则会引发异常。

我使用了 try-catch,但由于某种原因,try 和 catch 无法识别彼此,除非我将它们放在一起,这并不是我真正想要的。

我的问题确实是:有没有一种方法可以让我的 try 和 catch 相互识别而不需要彼此相邻,以便我可以在它们之间运行代码?或者这是不可能的,我做错了?

这是我到目前为止的代码:

 import java.util.*;
public class Calculator
{
public static void main(String[] args)
{
String operatorInput;
double numberInput;
String userRedo = "Y";
double result = 0.0;
Scanner input = new Scanner(System.in);
System.out.println("Type in an arithmetic operator of your choice and press enter.");
System.out.println("Then, please type in a number that will undergo the operation.");

while((userRedo.toUpperCase()).compareTo("Y")==0)
{
try
{
operatorInput = input.nextLine();
if(operatorInput.compareTo("+")!=0||operatorInput.compareTo("-")!=0||
operatorInput.compareTo("*")!=0||operatorInput.compareTo("/")!=0)
{
throw new UnknownOperatorException("Unknown operator!");
}
}

numberInput = input.nextDouble();
if(operatorInput.compareTo("+")==0)
{
result += numberInput;
} else if(operatorInput.compareTo("-")==0)
{
result -= numberInput;
} else if(operatorInput.compareTo("*")==0)
{
result = result * numberInput;
} else
{
result = result / numberInput;
}

System.out.println("\nresult "+operatorInput+" "+numberInput+"= ");
System.out.println("Updated result: "+result);
System.out.println("Again? (y/n)");
userRedo = input.nextLine();


catch(UnknownOperatorException e)
{
System.out.println(e.getMessage());
}
}
}

}

这是我制作的异常类:

    public class UnknownOperatorException extends Exception 
{
public UnknownOperatorException()
{
super("Please select an actual operator and try again: ");
}

public UnknownOperatorException(String message)
{
super(message);
}

}

最佳答案

他们必须彼此相邻。您可以执行以下操作:

将注释行处的 } 向下移动一段距离,如下所示

    while((userRedo.toUpperCase()).compareTo("Y")==0) 
{
try
{
operatorInput = input.nextLine();
if(operatorInput.compareTo("+")!=0||operatorInput.compareTo("-")!=0||
operatorInput.compareTo("*")!=0||operatorInput.compareTo("/")!=0)
{
throw new UnknownOperatorException("Unknown operator!");
}

}//this one here

把它移到这里

    System.out.println("\nresult "+operatorInput+" "+numberInput+"= ");
System.out.println("Updated result: "+result);

}// put it here

然后取这两行

System.out.println("Again? (y/n)");
userRedo = input.nextLine();

并将它们移到捕捉点下方:

        catch(UnknownOperatorException e) 
{
System.out.println(e.getMessage());
}
System.out.println("Again? (y/n)");
userRedo = input.nextLine();
}
}

这将使您的 while 循环仍然发挥作用并使您的 try/catch 工作。不过,您可能需要稍微调整一下才能使其正常工作

关于Java 异常处理分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com