You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:00:35