gpt4 book ai didi

java - 在银行应用程序的 Java 代码中获取空点异常

转载 作者:行者123 更新时间:2023-12-01 12:23:15 24 4
gpt4 key购买 nike

大家好,我正在尝试测试我的代码,但是当我的应用程序要求检查或储蓄帐户时,我尝试通过编写 cc 或 ss 来破坏代码,我得到一个空指针异常。当我尝试通过写 ww 或 dd 来提款或存款来执行相同的操作。我们必须确保该程序万无一失。这是发生错误的代码部分。

static Scanner sc = new Scanner(System.in);


public static void validator(){

boolean isvalid=false;
while(isvalid==false)
{
System.out.println("Withdraw or deposit? (w/d):");

if ((sc.hasNext("d"))||(sc.hasNext("w"))||(sc.hasNext("W"))||(sc.hasNext("D"))){
transaction = sc.next();
isvalid=true;
}
else {
sc.nextLine();
System.out.println("Invalid Input! Type again");
continue;
}

System.out.println("Checking or saving? (c/s):");

if((sc.hasNext("c"))||(sc.hasNext("C"))||(sc.hasNext("s"))||(sc.hasNext("S"))){
accountType = sc.next();
isvalid=true;
}
else{
sc.nextLine();
System.out.println("Invalid Input! Type again");
continue;
}

System.out.println("Amount? :");

if(sc.hasNextDouble()){
creditDebit = sc.nextDouble();
isvalid=true;
}
else{
sc.nextLine();
System.out.println("Invalid Input! Type again");
continue;
}

if(creditDebit<1000){
isvalid=true;
}
else{
sc.nextLine();
System.out.println("Input must be lower than $1000");
continue;
}

}
}


public static void main(String[] args) {

String choice="y";
CheckingAccount c= new CheckingAccount();
SavingsAccount s=new SavingsAccount();
BankDisplay account1= new BankDisplay();

System.out.println("Checking Amount:"+account1.getChecking());
System.out.println("Saving Amount:"+account1.getSaving());
do{
try{

validator();
if(accountType.isEmpty()){
accountType=null;
}

if (transaction.equalsIgnoreCase("w") && accountType.equalsIgnoreCase("c")){
c.withdraw(creditDebit);
}
else if (transaction.equalsIgnoreCase("w") && accountType.equalsIgnoreCase("s")){
s.withdraw(creditDebit);
}
else if (transaction.equalsIgnoreCase("d") && accountType.equalsIgnoreCase("c")){
c.deposit(creditDebit);
}
else if (transaction.equalsIgnoreCase("d") && accountType.equalsIgnoreCase("s")){
s.deposit(creditDebit);
}


System.out.println("Continue? (y/n): ");
choice=sc.next();
}
catch(InputMismatchException e){
System.out.println("Invalid Input ! Please try again:");
sc.next();
continue;
}
}
while(!choice.equalsIgnoreCase("n"));

最佳答案

每次调用 hasNext 时,您都会消耗下一个 token 。您的 (sc.hasNext("d"))||(sc.hasNext("w"))||(sc.hasNext("W"))||(sc.hasNext("D")) 将从文件中吃掉一些 token 。 token 的数量取决于条件变为真的速度(如果有的话)。

这可能不是您想要的。

捕获下一个 token 并测试它。

关于java - 在银行应用程序的 Java 代码中获取空点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26516025/

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