创建用户定义的异常类,将null作为答案(JAVA)
我试图实现以下问题,但在尝试将值传递给该方法时,得到的答案是null。在提取时计算新余额后,我似乎无法将值传递给方法转移。 帐户类别:创建用户定义的异常类,将null作为答案(JAVA),java,exception-handling,Java,Exception Handling,我试图实现以下问题,但在尝试将值传递给该方法时,得到的答案是null。在提取时计算新余额后,我似乎无法将值传递给方法转移。 帐户类别: package Number3; public class Account { private int balance; private int maxTransfer; public Account() { balance = 0; maxTransfer = 0; } public Account(int bal,int maxT)
package Number3;
public class Account {
private int balance;
private int maxTransfer;
public Account()
{
balance = 0;
maxTransfer = 0;
}
public Account(int bal,int maxT)
{
balance = bal;
maxTransfer = maxT;
}
public void setBalance(int b)
{
balance = b;
}
public int getBalance()
{
return balance;
}
public void setMaxTransfer(int m)
{
this.maxTransfer = m;
}
public int getMaxTransfer()
{
return maxTransfer;
}
public void withdraw(int amount) throws insufficientFundException
{
if(!(amount < balance))
{
balance = balance - amount;
}
else
{
throw new insufficientFundException();
}
}
public void transfer(int amount)
{
balance = amount + balance;
}
public void display()
{
System.out.println("Current balance: "+getBalance());
}
}
以及用户定义的异常的类:
package Number3;
public class insufficientFundException extends Exception{
public static void main(String[] args) {
System.out.println("You don't have enough funds in your account.");
}
}
请告诉我我做错了什么。谢谢。您错误地实现了自定义异常。您需要使用消息调用Exception类中的超级构造函数,如:
class MyCustomException extends Exception {
MyCustomException(String message) {
super(message);
}
}
如其他人所述,您需要使用如下消息调用您的异常:
throw new MyCustomException("Error message");
首先,您使用的是getter来获取balance\maxtranfer,而不是打印它 您无法执行传输,因为在您退出后,开关断开,执行结束
还请注意,您正在自定义的异常类中实现另一个main()方法。此main方法永远不会被调用。将异常添加到构造函数中的超类
package Number3;
public class insufficientFundException extends Exception{
insufficientFundException(String msg){
super(msg);
}
}
在代码中,发生异常时抛出该异常
if(balance-withdrawal<0){
throw new insufficientFundException("Your error message");
}
if(余额提取您的类应该是这样的
package Number3;
public class InsufficientFundException extends Exception{
public InsufficientFundException(String message){
super(message);
}
}
然后,通过传入希望在运行时显示的字符串值,创建此异常类的新实例
标准范例
public void withdraw(int amount) throws insufficientFundException
{
if(!(amount < balance))
{
balance = balance - amount;
}
else
{
throw new InsufficientFundException("You do not have enough money in your account");
}
}
public void draw(int amount)抛出InventificientFundException
{
如果(!(金额<余额))
{
余额=余额-金额;
}
其他的
{
抛出新的InsufficientFundException(“您的帐户中没有足够的钱”);
}
}
另外,我刚刚意识到你的if-else语句可能是错误的,因为你告诉程序如果金额不小于余额,在你应该说如果金额小于余额时,从余额中取出金额,从帐户中取出钱
像这样
if(amount < balance)
{
balance = balance - amount;
}
else
{
throw new InsufficientFundException("You do not have enough money in your account");
}
if(金额<余额)
{
余额=余额-金额;
}
其他的
{
抛出新的InsufficientFundException(“您的帐户中没有足够的钱”);
}
问题出在哪里?是否出现异常?输出是否错误?请确保包含问题的所有详细信息。当我输入要提取的金额时,它应该再次显示余额,但我的回答为空。即使我输入的金额超过余额。顺便说一句:您的异常不正确。您应该被拒绝将消息传递给Exception的构造函数,而不是在其中创建另一个main
方法。在程序的正常流程中,main
方法将永远不会被调用。那么,您在调试器中逐行检查了每一行代码了吗?@Makoto您能告诉我怎么做吗?我是新手。刚刚在c中学习过这一点lass.为什么出现RuntimeException
?对我来说,问题发生在运行时,所以我有RuntimeException,但如果你也有异常,这没什么区别,它们几乎都是一样的RuntimeException
是针对未检查的异常。它们非常不同。我尝试了它,它成功了。另外,它是pr正在初始化null,因为我没有使用display方法。我将其改为a.display()。很高兴能提供帮助,请注意您的if-else循环:)谢谢,我改为使用a.display(),它打印了新的余额。
if(amount < balance)
{
balance = balance - amount;
}
else
{
throw new InsufficientFundException("You do not have enough money in your account");
}