java Array显示乘法结果的麻烦

时间:2014-11-07 06:05:00

标签: java arrays for-loop multidimensional-array parseint

我正在计算货币乘以百分比(即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]);
    }

1 个答案:

答案 0 :(得分:2)

这可能是因为您的in[]数组的大小为3.但对于row=3,此in[row]=0.06;语句将引发java.lang.ArrayIndexOutOfBoundsException
因此,请将in[]声明为Double[] in = new Double[input.length];