【问题标题】:What is causing the error I am getting when trying to create an object? [duplicate]是什么导致我在尝试创建对象时遇到错误? [复制]
【发布时间】:2019-11-30 20:46:49
【问题描述】:

我正在尝试为创建工资单存根的类编写程序。我在网上查看了工作,我正在尝试创建自己的版本,但我不断收到围绕我的 main() 是什么的错误,并且它无法正常运行。

我已尝试重新组织代码、创建新文件并重命名,但仍然出现以下异常:

"Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    No enclosing instance of type Employee is accessible. Must qualify the allocation with an enclosing instance of type Employee (e.g. x.new A() where x is an instance of Employee).
at Employee.main(Employee.java:8)

我希望能够在我的代码中输入这些值:

import java.util.Scanner;
import java.util.*;

public class Employee{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        PayStub data = new PayStub();

        System.out.println("Enter name: ");
        data.setName(input.next());

        System.out.println("Enter address: ");
        data.setAddress(input.next());

        System.out.println("Enter SSN: ");
        data.setSSN((input.next()));

        System.out.println("Number of hours: ");
        data.setHoursWorked(Double.parseDouble(input.next()));

        System.out.println("Enter hourly rate: ");
        data.setHourlyPayRate(Double.parseDouble(input.next()));

        input.close();
    }
}

public class PayStub {
    private String name;
    private double hoursWorked;
    private double hourlyRate;
    private double fedTaxRate;
    private double stateTaxRate;
    private String address;
    private String phone;
    private String SSN;

    public PayStub() {

    }
    public PayStub(String n, double w, double p) {
        this.name = n;
        this.hoursWorked = w;
        this.hourlyRate = p;
    }

    public double grossPay(double hr, double hw) {
        double grossPay = (hourlyRate * hoursWorked);
        return grossPay;
    }

    public void setFedTax(double fedTaxRate) {
        this.fedTaxRate = fedTaxRate;
    }
    public double getFedTax() {
        return fedTaxRate;
    }

    public void setStateTax(double stateTaxRate) {
        this.stateTaxRate = stateTaxRate;
    }

    public double getStateTax() {
        return stateTaxRate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHoursWorked() {
        return hoursWorked;
    }

    public void setHoursWorked(double hoursWorked) {
        this.hoursWorked = hoursWorked;
    }

    public double getHourlyPayRate() {
        return hourlyRate;
    }

    public void setHourlyPayRate(double hourlyRate) {
        this.hourlyRate = hourlyRate;
    }

    public String getAddress(){
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone(){
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getSSN() {
        return SSN;
    }

    public void setSSN(String SSN) {
        this.SSN = SSN;
    }
}

【问题讨论】:

  • “是什么导致了我遇到的错误” + “未解决的编译问题” = 编译错误导致代码无法运行。在尝试运行代码之前修复编译错误。查看 compiler 的输出以查看完整的编译器错误。然后修复它。

标签: java class main


【解决方案1】:

最简单的解决方法是将公共类 PayStub 移动到名为 PayStub.java 的文件中。

您可以将PayStub 声明为静态类,使其成为Employee 的嵌套类,但没有理由这样做,因为PayStub 不是员工类型,但它是员工拥有的.这是承包商可能拥有的东西,等等......所以你想把它分成自己的文件,因为它是一个可重用的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2023-01-01
    • 2016-11-16
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多