我正在为班级分配一小部分额外的学分。基本上,用户输入5个数字,然后给出平均值。我有一个if语句来检查数组长度是否大于5,如果是,则关闭程序。
但是,该程序似乎以前五个给定的数字执行而不是停止。我不确定自己在忽略什么
public static double[] getNumbers() {
Scanner input = new Scanner(System.in);
double[] numbers = new double[5];
System.out.print("Enter integers: ");
for (int i = 0; i < 5; ++i) {
numbers[i] = input.nextDouble();
if (numbers[i] == 999) {
System.exit(0);
}
}
return numbers;
}
public static double[] getAverage(double[] numbers) {
double[] total = new double[1];
double[] average = new double[1];
for (int i = 0; i < 5; ++i) {
total[0] = total[0] + numbers[i];
}
average[0] = total[0] / numbers.length;
return average;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double[] numbers;
double average = 0;
while (true) {
System.out.println("Enter 5 integers, for example: 10 20 50 84 73");
numbers = getNumbers();
if (numbers.length > 5) {
System.exit(0);
}
average = numbers[0];
System.out.println("Average is: " + average);
}
}
}
答案 0 :(得分:1)
该数组永远不会大于5,因此无论用户键入多少数字,该程序都不会提前退出。
由于创建的数组的容量为5个元素(并且for
循环仅运行5次),因此数组的长度永远不会超过5个元素。
double[] numbers = new double[5];
//...
for (int i = 0; i < 5; ++i) {
numbers[i] = input.nextDouble();
//...
}
答案 1 :(得分:0)
最终 @ Hydraxan14 正确的是。即使输入第6个值,它仍将计算前五个整数的平均值。
答案 2 :(得分:0)
我已经优化了您的代码。在下面的代码上,您还可以获取总和的平均值。 getNumbers()
获取输入并返回数组numbers
,并在numbers[]
方法上分配main
数组。那么您可以检查numbers[]
数组的长度,如果长度超过5,则System.exit(0)
,else
会打印平均值
import java.util.Scanner;
public class GuessAvagereNumber {
public static void main(String[] args) {
System.out.println("Enter 5 integers, for example: 10 20 50 84 73");
double[] numbers = getNumbers();
if(numbers.length>5){
System.exit(0);
} else {
System.out.println("Average is: " + getAverage(numbers));
}
}
private static double[] getNumbers() {
Scanner input = new Scanner(System.in);
double[] numbers = new double[5];
System.out.print("Enter integers: ");
for (int i = 0; i < 5; ++i) {
numbers[i] = input.nextDouble();
if (numbers[i] == 999) {
System.exit(0);
}
}
return numbers;
}
private static double getAverage(double[] numbers) {
double doubleKeeper = 0;
for (int i = 0; i < numbers.length; ++i) {
doubleKeeper+=numbers[i];
}
return doubleKeeper/numbers.length;
}
}