我正在计算货币乘以百分比(即1000美元* .04 = 40美元)并打印出结果(即40美元)。我有一个包含信息的2D String数组。首先,我想打印每行的百分比,具体取决于第一个for循环中显示的某些因素。然后我想显示货币时间的结果,即第二个for循环中的百分比。我有一维双数组,显示百分比显示为小数,将乘以金钱来产生结果。我一直收到这个错误 - > java.lang.ArrayIndexOutOfBoundsException:3
所以我认为1D Double数组有问题,但我不知道是什么。
FileReader fr = new FileReader("input.txt");
BufferedReader br = new BufferedReader(fr);
//2D array
String[][] input = new String[15][4];
//1D array
Doubt[] in = new Double[3];
for(int row=0; row<input.length; row++){
int a = Integer.parseInt(input[row][1]);
int b = Integer.parseInt(input[row][2]);
double s = Double.parseDouble(input[row][3]);
if(a>=50 && b==1){
System.out.println(input[row][0] + "\t\t2%");
in[row]=0.02;
}
if(a>=25 && b==1){
System.out.println(input[row][0] + "\t\t4%");
in[row]=0.04;
}
if((a>=15 && b==1){
System.out.println(input[row][0] + "\t\t6%");
in[row]=0.06;
}
}
for(int row=0; row<input.length; row++){
int a = Integer.parseInt(input[row][1]);
int b = Integer.parseInt(input[row][2]);
double s = Double.parseDouble(input[row][3]);
System.out.println(input[row][0] + "\t\t" + s*in[row]);
}
答案 0 :(得分:2)
这可能是因为您的in[]
数组的大小为3.但对于row=3
,此in[row]=0.06;
语句将引发java.lang.ArrayIndexOutOfBoundsException
。
因此,请将in[]
声明为Double[] in = new Double[input.length];