Java实现用户输入数值的平均值、最值计算求助(非Math类方法)
手动实现数值的平均值、最小值和最大值(不用Math.min/max)
嘿,我懂你现在的困扰——已经能算出平均值和最大值,但最小值还没搞定,而且不想依赖Math.min()和Math.max()方法对吧?咱们直接用基础的循环和比较逻辑来解决,完全不用现成的工具类!
完整修改后的代码
import java.text.DecimalFormat; import java.util.Scanner; public class ProblemSet3_1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); DecimalFormat df = new DecimalFormat("#.##"); // 格式化输出保留两位小数 System.out.print("请输入要计算的数值个数:"); int count = input.nextInt(); // 初始化变量:总和、最小值、最大值 double sum = 0; double minValue = 0; double maxValue = 0; for (int i = 1; i <= count; i++) { System.out.print("请输入第" + i + "个数值:"); double num = input.nextDouble(); sum += num; // 处理第一个输入的数值,初始化最小和最大值 if (i == 1) { minValue = num; maxValue = num; } else { // 手动比较更新最小值 if (num < minValue) { minValue = num; } // 手动比较更新最大值 if (num > maxValue) { maxValue = num; } } } // 计算平均值 double average = sum / count; // 输出结果 System.out.println("平均值:" + df.format(average)); System.out.println("最小值:" + df.format(minValue)); System.out.println("最大值:" + df.format(maxValue)); input.close(); } }
关键逻辑说明
- 初始化最小/最大值:第一次输入数值时,直接把它赋值给
minValue和maxValue,这样就不会出现初始值(比如0)和输入数值范围不匹配的问题(比如输入全是负数的情况)。 - 手动更新最小值:每次输入新数值后,和当前的
minValue比较,如果新数值更小,就把minValue替换成这个新数值。 - 手动更新最大值:同理,每次输入新数值后,和当前的
maxValue比较,如果新数值更大,就替换maxValue。 - 平均值计算:用
double类型存储总和和平均值,避免整数除法导致的精度丢失问题,再用DecimalFormat格式化输出,让结果更美观。
这样改完之后,就能完整显示平均值、最小值和最大值啦,完全没用到Math类的方法,都是基础的逻辑实现~
内容的提问来源于stack exchange,提问作者rachie
相关产品推荐
相关产品推荐

