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

Java返回变量报错求助:调用area方法时实参与形参不匹配

解决Java方法调用参数不匹配的错误

你遇到的这个错误很典型——方法调用时的参数列表和方法定义不匹配。咱们先看编译器给出的错误提示:

exit status 1 Main.java:18: error: method area in class Main cannot be applied to given types;
String ara = area();
^
required: double,double
found: no arguments
reason: actual and formal argument lists differ in length
1 error

这个提示已经把问题说透了:你定义的area方法需要接收两个double类型的参数(长度和宽度),但在main方法里调用area()时没有传任何参数,所以编译器直接报错了。

再看你的代码:

import java.util.*; 
public class Main { 
    public static void main(String[] args) { 
        System.out.println("Enter Length"); 
        Scanner input = new Scanner (System.in); 
        double L = input.nextDouble(); 
        Scanner input2 = new Scanner (System.in); // 这里不需要创建第二个Scanner
        System.out.println("Enter Width: "); 
        double W = input.nextDouble(); 
        String ara = area(); // 问题核心:没传必要参数
        System.out.println(ara); 
    } 
    public static String area(double L, double W) { 
        double total = L*W; 
        String ara = String.valueOf(total); 
        return ara; 
    } 
}

给你两个关键的修改点,搞定这个问题:

  • 修正方法调用,传递必要参数
    在main方法里调用area时,把你已经获取到的长度L和宽度W传进去,改成这样:

    String ara = area(L, W);
    
  • 移除多余的Scanner对象
    你不需要创建两个Scanner实例,一个就可以处理所有输入操作,删掉Scanner input2 = new Scanner (System.in);这一行,避免不必要的资源浪费。

修改后的完整代码如下:

import java.util.*; 
public class Main { 
    public static void main(String[] args) { 
        System.out.println("Enter Length"); 
        Scanner input = new Scanner (System.in); 
        double L = input.nextDouble(); 
        System.out.println("Enter Width: "); 
        double W = input.nextDouble(); 
        String ara = area(L, W); // 传递L和W作为参数
        System.out.println(ara); 
    } 
    public static String area(double L, double W) { 
        double total = L*W; 
        String ara = String.valueOf(total); 
        return ara; 
    } 
}

另外给你一个小优化建议:如果没必要返回String类型,其实可以让area方法直接返回double类型的面积,代码会更简洁:

import java.util.*; 
public class Main { 
    public static void main(String[] args) { 
        System.out.println("Enter Length"); 
        Scanner input = new Scanner (System.in); 
        double L = input.nextDouble(); 
        System.out.println("Enter Width: "); 
        double W = input.nextDouble(); 
        double area = area(L, W); 
        System.out.println(area); 
    } 
    public static double area(double L, double W) { 
        return L*W; 
    } 
}

这样修改后,代码就能正常运行,输入长度和宽度后就能得到矩形的面积啦~

内容的提问来源于stack exchange,提问作者Krev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:54