我正在尝试编写一种方法,打印从 testCases 文件中读取的数据,并使用它在 switch 语句的帮助下对所述帐户执行某些操作。在这种情况下,我正在尝试将钱存入上述账户。该程序读取第一个字母以了解要调用的方法。然后,它读取接下来的四个数字作为帐号。之后,根据调用的字母,程序将读取下一个双倍作为存款金额。如果该金额是不可能存入的金额,它会打印一条错误消息通知用户。这是正在读取的测试用例文件。 D是押金。 Q是退出。该文件的语法是(做什么,acctNumber,存入金额)
D 9685 1100.67
d 7187 -2900.08
D 9000 701.66
Q
这里是 deposit() 方法。
public static void deposit(Scanner testCases,Scanner inputFile, PrintWriter outputFile, int[] acctNum, double[] balance, int numAccts) {
int account = -1;
double dp = 0;
dp = testCases.nextDouble();
account = findAcct(inputFile,acctNum, numAccts, account);
outputFile.printf("Depositing money...");
if (account== -1)
outputFile.printf("Account not found.");
else
outputFile.printf("\nDepositing money into account number: %1d \nCurrent balance: %1.2f\nEnter amount to deposit: %1.2f", acctNum[account], balance[account], dp);
if (dp < 0 || dp == 0)
outputFile.printf("\n Invalid deposit amount: Cannot deposit negative/zero dollars. ");
else {
balance[account] += dp;
outputFile.printf("\nSuccessfully deposited $%1.2f Into account %1d. new balance is: $%1.2f",dp,acctNum[account], balance[account]);
}
}
这里是 findAcct()。
public static int findAcct(Scanner inputFile, int[] acctNum, int numAccts, int account) {
int var;
var = inputFile.nextInt();
for(int x=0;x < numAccts; x++) {
if (acctNum[x] == var) {
account = x;
}
}
return account;
}
我不明白为什么这个程序返回 NoSuchElementException,当它应该读取双倍作为存款金额时。相反,它根本就不是阅读。我该如何解决这个问题?