【问题标题】:"main" java.lang.error not applicable for the arguments“main” java.lang.error 不适用于参数
【发布时间】:2014-10-23 14:50:44
【问题描述】:

我将如何修复此错误?

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method methodName(className[], String, int) in the type Program is not applicable for the arguments ()

    at Program.main(Program.java:43)

我的代码的一个 sn-p,调用方法:

public class Program {
  public static void main(String[] args) throws FileNotFoundException {
    methodName();
  }
}

方法名代码:

public static void methodName(className[] array, String stringName, int counter){
 //Code here
}

【问题讨论】:

  • 你没有传递给你的方法methodName()的参数
  • 我必须传递className[]、stringName和counter吗?
  • 如果以下任一答案对您有所帮助,请考虑接受。这会给您和回答者带来少量声誉,并向其他人表明您已经找到了解决方案。

标签: java methods compilation arguments


【解决方案1】:

您需要通过您现在没有传递的methodName根据需要传递参数。

【讨论】:

    【解决方案2】:

    您已将methodName 声明为接受 3 个参数,这意味着无论何时调用它,都必须传递三个参数,否则您将收到此错误。原因是方法名称连同参数列表及其类型构成了所谓的方法签名,它唯一地标识了一个方法。

    如果您尝试在不传递参数的情况下调用methodName(),您实际上是在要求不同的方法签名,在这种情况下,一个不存在的方法签名,这就是问题所在。有两种方法可以解决这个问题:

    实现methodName()

    您可以为methodName() 编写一个不带任何参数的定义,如下所示:

    public static void methodName()
    {
        // Code that does not require any parameters
    }
    

    然后当您调用methodName() 时,您将获得您在此处编写的代码。

    致电methodName(arg1, arg2, arg3)

    如果您实际上传递了methodName 所有三个参数,您将获得标记为“//此处代码”的代码。还要确保你不只是传递任何类型的三个参数,而是特别

    className[] arg1;
    String arg2;
    int counter;
    
    // Initialize the values to whatever you want
    
    methodName(arg1, arg2, arg3);
    

    这将按您的预期运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多