【问题标题】:Method not applicable for arguments方法不适用于参数
【发布时间】:2013-03-08 04:33:31
【问题描述】:

我正在尝试创建一个测试器类,但在这样做时我收到了一个错误消息:

1 error found:

Error: The method printData(double, double) in the type PayCalculator is not
    applicable for the arguments ()

我该如何解决?这是我的测试代码

PayCalculator p1 = new PayCalculator();
    p1.setHourlyRate(8.25);
    p1.setHoursWorked(45.0);    
    p1.printData();

我的主要代码

{
  private double hourlyRate;
  private double hoursWorked;


  public PayCalculator()
  {
    hourlyRate = 0.0;
    hoursWorked = 0.0;
  }

  /**
   * Two parameter constructor
   * Add hourlyRate and hoursWorked
   * @param the hourly rate
   * @param the hours worked
   */
  public PayCalculator(double aHourlyRate, double aHoursWorked)
  {
    hourlyRate = aHourlyRate;
    hoursWorked = aHoursWorked;
  }

  /**
   * sets the hourly rate
   * @return hourlyRate
   */ 
  public void setHourlyRate(double aHourlyRate)
  {
    hourlyRate = aHourlyRate;
  }

  /**
   * gets the hourly rate
   * @param hourlyRate
   */
  public double getHourlyRate()
  {
    return hourlyRate;
  }

  /**
   * sets the hours worked
   * @return hoursWorked
   */ 
  public void setHoursWorked(double aHoursWorked)
  {
    hoursWorked = aHoursWorked;
  }

  /**
   * gets the hours worked
   * @param hours worked
   */
  public double getHoursWorked()
  {
    return hoursWorked;
  }



  public boolean workedOvertime()
  {
    if (hoursWorked > 40)
    {
      return true;
    }
    else 
    {
      return false;
    }
  }

  public double numHoursOvertime()
  {
    if (hoursWorked > 40)
    {
      return hoursWorked - 40;
    }
    else 
    {
      return 0;
    }
  }

  public double calculateGrossPay()
  {
    if (hourlyRate  <= 10.25)
    {
      if (hourlyRate <= 40)
        return hourlyRate * hoursWorked;
    }
    else 
    {  
      double grossPay = ((40 * hourlyRate) + ((hourlyRate * 2) * hoursWorked - 40));
      return grossPay;
    }

    if (hoursWorked <= 60)
    {
      return hourlyRate * hoursWorked;
    }
    else
    {
      return 60 * hourlyRate;
    }
  }

  public double determineTaxRate(double grossPay)
  {
    if (grossPay >= 800)
    {
      double tax = 0;
      tax = grossPay * 0.37;
      return tax;
    }
    else if ( grossPay >= 400)
    {
      double tax = 0;
      tax = grossPay * 0.22;
      return tax;
    }
    else
    {
      double tax = 0;
      tax = grossPay * 0.12;
      return tax;
    }
  }

  public double calculateNetPay(double grossPay, double tax)
  {
    double calculateNetPay = grossPay - tax;
    return calculateNetPay;
  }

  public void printData(double grossPay, double tax)
  {
    System.out.println("Hours Worked: " + hoursWorked);
    System.out.println("Hourly rate: " + hourlyRate);
    System.out.println("Number of hours of overtime worked: " + numHoursOvertime());
    System.out.println("Worked overtime? " + workedOvertime());
    System.out.println("Gross pay: " + calculateGrossPay());
    System.out.println("Tax Rate: " + determineTaxRate(grossPay));
    System.out.println("Net Pay: " + calculateNetPay(grossPay, tax));
  }
}

【问题讨论】:

  • 如果您查看printData 函数,它需要两个 参数:grossPaytax。但是,当您在测试代码中调用该方法时,您不会给它任何参数。
  • 您对此的回答已经存在于您之前的@​​987654321@ 中。您现在已经三次发布了相同的问题。 两次来自此帐户,一次来自您的other account

标签: java compiler-construction parameters arguments boolean


【解决方案1】:

嗯,是的。这是方法声明:

public void printData(double grossPay, double tax)

这就是您尝试调用它的方式:

p1.printData();

您希望grossPaytax 使用什么值?

老实说,您必须在已经指定工作时间和小时费率的情况下输入grossPay,这似乎很奇怪,但那是另一回事。最直接的问题是您没有提供方法所需的参数。

【讨论】:

    【解决方案2】:

    您的方法需要两个值 grossPaytax

    public void printData(double grossPay, double tax)
    

    但是你在调用它时没有提供grossPaytax

    p1.printData();
    

    在调用您的方法时包含grossPaytax 的值,它会像这样正常工作:

    p1.printData(123.00,2.5);
    

    【讨论】:

      【解决方案3】:

      你的方法的定义是:

      public void printData(double grossPay, double tax)
      

      它期望调用带有两个双参数,而您调用时不带参数:

      p1.printData();
      

      将双参数传递给printData(44.85d, 77.56d)

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2012-08-30
        • 2015-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多