【问题标题】:java Array trouble displaying multiplication resultjava数组显示乘法结果的问题
【发布时间】:2014-11-07 06:05:00
【问题描述】:

我正在尝试计算金额乘以百分比(即 $1000*.04 = $40)并打印出结果(即 $40)。我有一个保存信息的二维字符串数组。首先,我想打印每一行的百分比,这取决于第一个 for 循环中显示的某些因素。然后我想在第二个 for 循环中显示金钱时间百分比的结果。我有一个 1D Double 数组,其中包含显示为小数的百分比,该百分比将乘以钱来产生结果。我不断收到此错误 --> 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]);
    }

【问题讨论】:

  • 您正在访问数组中的第三个元素。请注意array的索引以0开头。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2021-06-07
    • 1970-01-01
    • 2020-09-10
    • 2012-11-19
    相关资源
    最近更新 更多