类中的方法不能应用于给定的类型。必填:无参数

时间:2019-01-22 05:22:45

标签: java compiler-errors

我是编码的新手,所以这可能是一个非常简单的问题。

编译时出现错误:

GradeAnalyzer.java:49: error: method getAverage in class GradeAnalyzer cannot be applied to given types;
      myAnalyzer.getAverage(myClassroom);
                ^
  required: no arguments
  found: ArrayList<Integer>
  reason: actual and formal argument lists differ in length

对于我的一生,我无法理解为什么。我以为我的问题是需要一个论点,但我有一个论点,就是“ myClassroom”。

这是我的批量代码:https://bitbucket.org/snippets/Faraday_/pexqKb

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

您的方法getAverage()应该接受ArrayList作为参数,以消除编译错误。 试试这个

public int getAverage(ArrayList<Integer> myClassroom ) {

    if (myClassroom .size() < 1) {
      System.out.println("Error. Not items in Arraylist.");
      return 0;
    }

    else {
      int sum = 0;

      for (int grade : myClassroom) {
        sum += grade;
      }

      int average = sum / myClassroom .size();

      System.out.println(average);

      return average;

    }

  }

答案 1 :(得分:1)

您正在调用getter方法

format_version: 3
pipelines:
  copy_code_cluster:
    group: MyGroup
    materials:
      terraform_git:
        git: git@gitlab.xxxx.com/spark-jobs.git
        branch: develop

    parameters:
      KAFKA_CODE: "s3://code_path/spark-jobs.zip"

    stages:
    - provision:
        clean_workpace: true
        jobs:
          terraform:
            tasks:
              - exec:
                  command: /bin/sh
                  arguments:
                    - "-c"
                    - "aws emr add-steps --cluster-id 'j-xxxxxxx' --steps 'Name= \"copy zip  to cluster home directory\" , Jar=\"command-runner.jar\",Args=[ \"aws\" , \"s3\" , \"cp\", \"#{KAFKA_CODE}\" ,  \"/home/hadoop/\"]' "

作为大多数自动生成的getter方法,它不会接收任何参数,因此不会出现并且不能接收参数 myAnalyzer.getAverage(myClassroom); ,因此请相应地更改代码

myClassroom

答案 2 :(得分:1)

您的constructor(props) { super(props); this.input = React.createRef(); this.didFocusDSubscription = this.props.navigation.addListener( 'didFocus', payload => { this.input.current.focus(); } ); } render() { return <TextInput ref={this.input} />; } 方法不需要任何参数。但是当您调用它时,您已经通过了一个。那就是你在这里遇到的错误。如果要传递参数,则需要像这样更改getAverage()方法签名,

getAverage()

您可以使用在方法内部传递的grades参数,而不是在方法内部创建列表。

答案 3 :(得分:1)

您正在通过main方法将参数传递给getAverage()。但是getAverage()中没有参数。因此,您只需要更改getAverage()方法。这是getAverage()的代码。

public int getAverage(ArrayList<Integer> grades) {


    if (grades.size() < 1) {
      System.out.println("Error. Not items in Arraylist.");
      return 0;
    }

    else {
      int sum = 0;

      for (int grade : grades) {
        sum += grade;
      }

      int average = sum / grades.size();

      System.out.println(average);

      return average;

    }

  }