如何在 java 中划分数组中的双打?

How to divide doubles in an array in java?

我的数组中有一些双打。我想将它们分开,例如,使用包含 6.0、3.0 和 2,0 的数组,结果应为 1 (6/3/2)。我写了下面的代码:

System.out.print("How many numbers do you want to divide? ");
int division = input.nextInt();
double[] divisionArray = new double[division];

for(int i = 0; i < division; i++) {
    System.out.print("Enter your " + (i + 1) + ". number: ");
    divisionArray[i] = input.nextDouble();
}
for(int k = 0; k < division; k ++) {
    double resultDivision = divisionArray[k] / divisionArray[k + 1];
}
System.out.println("Result: " + resultDivision);

但这似乎不起作用。我收到错误 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 我是一个完整的 java 初学者。谁能帮帮我?谢谢

这应该有效:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("How many numbers do you want to divide? ");

        int division = input.nextInt();
        double[] divisionArray = new double[division];

        for(int i = 0; i < division; i++) {
            System.out.print("Enter your " + (i + 1) + ". number: ");
            divisionArray[i] = input.nextDouble();
        }

        //remember the first value and divide it trough the second, 
        //third, fourth and so on...
        double result = divisionArray[0];
        for(int k = 1; k < division; k ++) {
            result = result / divisionArray[k];
        }
        System.out.println("Result: " + result);
    }

您的代码存在三个问题。

  1. resultDivision 是在 for 循环的范围内定义的,因此在打印结果时不可见。

  2. 修复#1 后,您将得到一个 ArrayOutOfBounds 异常,因为第二个 for 循环试图访问 divisionArray[k+1].

  3. 你不检查用户给你的参数。如果用户指定要除 -5 个数字怎么办?您的代码将尝试创建一个长度为 -5 的数组,从而导致 Exception。另外,如果用户想除以零怎么办?你同意吗?

这里有一个稍微好一点的版本:

Scanner input = new Scanner(System.in);
int division = 0;
do {
    System.out.print("How many numbers do you want to divide? ");
    division = input.nextInt();
} while (division <= 0);

double[] divisionArray = new double[division];
for (int i = 0; i < division; i++) {
    System.out.print("Enter your " + (i + 1) + ". number: ");
    divisionArray[i] = input.nextDouble();
        if (divisionArray[i] == 0 && i>0) { // Remove this if you want to allow the user to divide by zero. Entering zero as the first argument is legal
    System.out.println("Zero is an illegal argument, please enter a different number");
        i--;
    }
}
double resultDivision = divisionArray[0];
for (int k = 1; k < division; k++) {
    resultDivision = resultDivision / divisionArray[k];
}
System.out.println("Result: " + resultDivision);

祝你好运。