Java报错:calculateDensity(double[], double[])方法不适用无参调用
错误原因及代码修复
直接错误原因
你调用calculateDensity()时没有传入方法要求的参数。这个方法定义明确要求接收两个double[]类型的参数(mass和volume),但你调用时是空括号,没有传递任何参数,所以编译器报错提示参数不匹配。
代码里的其他问题(不修复的话就算传参也会出错)
- 完全没定义
mass数组,也没接收用户输入的质量数据,方法需要的mass参数根本不存在。 volume数组在for循环内部声明,每次循环都会重新创建一个新数组,循环结束后这个数组会被销毁,外部无法访问,更没法传给方法。- Scanner对象在循环里重复创建,属于不必要的资源浪费,应该在循环外初始化一次。
修复后的代码示例
import java.util.Scanner; public class Density { public static void main(String[] args) { System.out.println("Enter the mass and volume for your 3 compounds."); // 提前初始化两个数组,存储3组数据 double[] mass = new double[3]; double[] volume = new double[3]; Scanner s = new Scanner(System.in); // 循环外创建一次Scanner for(int i = 0; i < 3; i++) { System.out.print("请输入第" + (i+1) + "组的质量: "); mass[i] = s.nextDouble(); System.out.print("请输入第" + (i+1) + "组的体积: "); volume[i] = s.nextDouble(); } //end for loop // 传入两个数组参数调用方法 calculateDensity(mass, volume); } // end main public static void calculateDensity(double[] mass, double[] volume) { // 这里实现密度计算逻辑,比如遍历数组计算每组的密度 for(int i = 0; i < mass.length; i++) { if(volume[i] == 0) { System.out.println("第" + (i+1) + "组体积不能为0"); continue; } double density = mass[i] / volume[i]; System.out.println("第" + (i+1) + "组的密度为: " + density); } } // end calculate density } // end class
内容的提问来源于stack exchange,提问作者rawrz
相关产品推荐
相关产品推荐

