Java初学者求助:报错无法找到父类子类符号,求均值标准差代码修正
解决Java父子类算术均值/标准差实现的报错问题
嘿,我帮你看看这个问题~你遇到的error: cannot find symbol superclass and subclass其实根源很明确:你只定义了父类ArithmeticMean,但完全没创建对应的子类,而且代码本身还有未完成的部分(比如输入逻辑、均值计算都没写完),导致Java无法识别父类子类的关系。我给你补全并修复了代码,完美实现父类计算算术均值、子类计算标准差的需求,一起来看:
完整可运行代码
import java.util.Scanner; // 父类:专注实现算术均值的计算 class ArithmeticMean { protected double sum = 0; protected double mean; protected double[] numbers; protected int count; // 接收用户输入的数字 void acceptNumbers() { Scanner scanner = new Scanner(System.in); System.out.println("How many Numbers do you want to enter?"); count = scanner.nextInt(); numbers = new double[count]; // 根据输入数量动态初始化数组,不用固定死10个 for (int i = 0; i < count; i++) { System.out.print("Enter number " + (i + 1) + ": "); numbers[i] = scanner.nextDouble(); sum += numbers[i]; // 同步累加求和 } scanner.close(); } // 核心:计算算术均值 void calculateMean() { if (count == 0) { mean = 0; return; } mean = sum / count; System.out.println("Arithmetic Mean: " + mean); } } // 子类:继承父类,实现标准差计算 class StandardDeviation extends ArithmeticMean { private double variance; private double standardDeviation; // 计算方差和标准差 void calculateStandardDeviation() { // 先调用父类方法算出均值 calculateMean(); double sumOfSquares = 0; for (double num : numbers) { sumOfSquares += Math.pow(num - mean, 2); } // 这里用的是**样本标准差**(除以count-1),如果需要总体标准差,改成除以count即可 variance = sumOfSquares / (count - 1); standardDeviation = Math.sqrt(variance); System.out.println("Variance: " + variance); System.out.println("Standard Deviation: " + standardDeviation); } } // 程序入口类 public class Main { public static void main(String[] args) { StandardDeviation sdCalculator = new StandardDeviation(); sdCalculator.acceptNumbers(); sdCalculator.calculateStandardDeviation(); } }
关键修复与优化点
- 解决报错核心:创建并正确继承子类:我新增了
StandardDeviation类,用extends ArithmeticMean实现继承,让Java能识别父类子类的关系,彻底解决“找不到符号”的报错。 - 补全输入逻辑:你原来的
accept方法只写了一半,现在补全了数字输入和实时求和的逻辑,还把数组改成动态初始化(根据用户输入的数量调整长度),比固定10个元素更灵活。 - 合理设置属性访问权限:把父类的
sum、mean等属性改成protected,既保证子类能直接访问,又避免了公开属性的不安全问题。 - 拆分职责:父类只负责接收输入和计算均值,子类专注于计算方差和标准差,符合面向对象的单一职责原则。
- 添加边界处理:增加了输入数量为0的判断,避免除以0的异常。
运行效果
运行程序后,输入你想要的数字数量,再依次输入每个数字,程序会自动输出算术均值、方差和标准差。
内容的提问来源于stack exchange,提问作者Abhishek Diwakar
相关产品推荐
相关产品推荐

