用Java的循环完成下列功能:用户输入任意个正数,输入0退出循环,计算并显示这些数的和、平均值、最大值、最小值。负数提示错误继续。
时间: 2024-10-07 17:07:37 浏览: 22
java 输入一个数字,反转输出这个数字的值(实现方法)
在Java中,我们可以使用`Scanner`类获取用户的输入,并利用`ArrayList`存储正数,然后遍历数组来计算总和、平均值、最大值和最小值。如果遇到负数,我们将提示错误并让用户继续输入。以下是实现这一功能的代码:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Double> numbers = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入一个正数(输入0结束):");
double num = scanner.nextDouble();
if (num == 0) {
break; // 用户输入0时退出循环
} else if (num < 0) {
System.out.println("错误!请输入正数。");
continue;
} else {
numbers.add(num);
}
}
if (numbers.isEmpty()) { // 避免除以0异常
System.out.println("没有输入任何数字。");
} else {
double sum = calculateSum(numbers);
double average = calculateAverage(numbers);
double max = Collections.max(numbers);
double min = Collections.min(numbers);
System.out.printf("和: %.2f\n", sum);
System.out.printf("平均值: %.2f\n", average);
System.out.println("最大值: " + max);
System.out.println("最小值: " + min);
}
scanner.close();
}
private static double calculateSum(ArrayList<Double> nums) {
double sum = 0;
for (double num : nums) {
sum += num;
}
return sum;
}
private static double calculateAverage(ArrayList<Double> nums) {
return calculateSum(nums) / nums.size();
}
}
```
这段代码首先创建了一个`ArrayList`来存储用户输入的正数,然后在一个无限循环中等待用户输入。当用户输入0时,跳出循环。如果输入的是负数,则给出提示并跳过当前迭代。最后,根据输入的数字计算和、平均值、最大值和最小值。
阅读全文