如何在 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);
}
您的代码存在三个问题。
resultDivision
是在 for
循环的范围内定义的,因此在打印结果时不可见。
修复#1 后,您将得到一个 ArrayOutOfBounds
异常,因为第二个 for
循环试图访问 divisionArray[k+1]
.
你不检查用户给你的参数。如果用户指定要除 -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);
祝你好运。
我的数组中有一些双打。我想将它们分开,例如,使用包含 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);
}
您的代码存在三个问题。
resultDivision
是在for
循环的范围内定义的,因此在打印结果时不可见。修复#1 后,您将得到一个
ArrayOutOfBounds
异常,因为第二个for
循环试图访问divisionArray[k+1]
.你不检查用户给你的参数。如果用户指定要除
-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);
祝你好运。