【问题标题】:Issue passing arguements to constructor in different public class在不同的公共类中将参数传递给构造函数
【发布时间】:2013-04-19 17:03:38
【问题描述】:

我很难将hourshourlyWage 参数传递给Paycheck 类中的构造函数。问题如下:

symbol: variable hours
location : class Paycheck

它在公共课薪水的每个小时或小时工资实例中重复。

代码如下

import java.util.Scanner;

public class PayDayCalculator {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Hourly wage: ");
        double hourlyWage = in.nextDouble();
        System.out.println("Hours worked: ");
        double hours = in.nextDouble();

        Paycheck paycheck = new Paycheck(hourlyWage, hours);
        System.out.println("Pay: " + paycheck.getPay());
    }
}

public class Paycheck {
    private double pay = 0;
    private double overtime = 0;
    private double overtimePay = 0;

    /*double hours;
    double hourlyWage; */
    Paycheck(double hourlyWage, double hours) {
        setPay(0);
    }

    public void setPay(double newPay) {
        if (hours > 40) {
            overtime = hours % 40;
            hours = hours - overtime;
        }
        overtimePay = hourlyWage * 1.5;
        pay = (hours * pay) + (overtime * overtimePay);
    }

    public double getPay() {
        return pay;
    }
}

【问题讨论】:

  • 你得到什么错误?
  • 什么难度?如果您发布错误和/或堆栈跟踪会很有帮助。
  • 为什么是setPay(0);?你的工资永远是零,不是吗?
  • 对不起,我以为我在上面发布了。当我尝试编译时,我收到一个错误,指出公共类 Paycheck 中的每个小时或 hourlyWage 引用它指出错误 37:找不到符号符号符号:变量小时位置:类 Paycheck
  • 更改 setPay(0);不会改变寻找符号的问题

标签: java variables methods constructor double


【解决方案1】:

你已经注释掉了成员变量hours

/*double hours;
double hourlyWage; */

但仍然尝试引用它,例如:

if (hours > 40) {
    overtime = hours%40;
    hours = hours - overtime;
}

如果您需要此变量,请取消注释。

【讨论】:

    【解决方案2】:

    hourshourlyWage 没有定义!

    取消注释这部分 -

    /*double hours;
    double hourlyWage; */
    

    【讨论】:

      【解决方案3】:

      您的setPay 方法引用hourshourlyWage,它们是传递给构造函数的参数,使它们仅对构造函数是本地的。它们不适用于类中的所有方法。如果您希望所有方法都可以访问它们,则需要在类级别取消注释。

      double hours;
      double hourlyWage;
      
      Paycheck(double hourlyWage, double hours) {
          this.hourlyWage = hourlyWage;
          this.hours = hours;
          setPay(0);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 2023-04-04
        • 2015-10-11
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多