程序要求用户输入一些金额,这些金额将存储到数组中。 但就我而言,在输入金额时,程序会显示错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at bankapplication.DepositWithdraw.deposit(DepositWithdraw.java:17)
at bankapplication.BankApplication.main(BankApplication.java:46)
我的代码
package bankapplication;
import java.util.*;
public class DepositWithdraw {
Scanner input = new Scanner(System.in);
int TransacNum;
double withAm;
int depAmArr[] = new int[TransacNum];
public void deposit() {
System.out.println("Depositing:\nHow many transaction you want to make? ");
TransacNum = input.nextInt();
for (int i = 0; i < TransacNum; i++) {
System.out.println("Enter amount " + (i + 1) + ":");
depAmArr[i] = input.nextInt();
}
System.out.println("You are done! Choose other option if you want to continue.\n");
}
}
[注意:此类及其方法是在我的主类中调用的。我没有在这里展示我的主要课程,但如果需要,我会编辑帖子
答案 0 :(得分:2)
TransacNum
默认为0
,直到您为其指定值。问题是您在此之前使用它来初始化depAmArr
。只需在TransacNum
之后初始化它,你就可以了:
TransacNum = input.nextInt();
depAmArr[] = new int[TransacNum];
答案 1 :(得分:1)
因为您从未使用用户输入的大小来启动它
初始化类已将默认设置放在所有类成员上,包括TransacNum
。 (值:0)
那些数组的大小设置为大小为0的数组。
只有在知道大小时才应创建数组。 即用户输入尺寸后。
示例:
TransacNum = input.nextInt();
depAmArr[] = new int[TransacNum]
此外,您应该将int depAmArr[] = new int[TransacNum];
更改为int depAmArr[];
答案 2 :(得分:1)
在transSum得到任何vaule之前你定义defAmArr。 这导致数组具有不同的值(或没有值)。 解决它只是做 new int [transSum]; 在你得到他对transSum的价值之后