首页 > 解决方案 > 灾难管理类显示“无法应用于”用户 u2 错误

问题描述

我正在这个实验室工作,我正在创建一个假设的灾难管理系统,供人们使用 Java 放置有关灾难的信息。在代码中,有两个同名的类User。实验室教程说第 75 行user u2应该使用以下代码使用紧急联系人类:

  User u2 = new User("Marlena", "Evans","6088861222", "me@daysofourlives.com");

但是,有了这个,控制台会出现这个错误: 'User(java.lang.String, java.lang.String, java.lang.String, java.lang.String)' in 'User' cannot be applied to '(java.lang.String, java.lang.String, boolean, int, java.lang.String, java.lang.String)'

所以我将其更改为:

 User u2 = new User("Marlena", "Evans", false, 30, "6088861222","me@daysofourlives.com");

这消除了错误。

我需要对此有新的看法。有人可以看看这个并告诉我为什么教程的代码不起作用吗?

下面是代码的样子:

在此处输入图像描述

这是我的代码:

//import java.sql.Timestamp (package already active)

public class User {
    private String firstName;
    private String lastName;
    private boolean gender; //true - male; false - female
    private int age;
    private BloodType blood;
    private String telephone;
    private String email;
    private User emergencyContact;
    public  void setContact(User u){
        this.emergencyContact = u;
    }

    public User (
            String firstName,
            String lastName,
            boolean gender,
            int age,
            String blood,
            String telephone,
            String email
    ) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = gender;
        this.age = age;
        this.blood = BloodType.fromString(blood);
        this.telephone = telephone;
        this.email = email;
    }

    public String getFirstName(){
        return this.firstName;
    }

    public String getLastName(){
        return this.lastName;
    }

    public boolean getGender(){
        return this.gender;
    }

    public int getAge() {
        return this.age;
    }

    public String getTelephone(){
        return this.telephone;
    }

    public String getEmail() {
        return this.email;
    }

    public BloodType getBlood() {
        return this.blood;
    }

    public User getEmergencyContact() {
        return this.emergencyContact;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO

         //Here is an example of using the new user constructor
        User u1 = new User("John","Black",true,25, "6085551234","jb@daysof" +
                "ourlives.com");
        //This example uses the Emergency Contact Constructor to create a new emergency contact
        User u2 = new User("Marlena", "Evans", false, 30, "6088861222","me@daysofourlives.com");

        u1.setContact(u2); //This means Marlena is the Emergency Contact for John

        System.out.println("User: " + u1.firstName + " has an emergency contact of: " + u1.emergencyContact.getFirstName());
    }

    public User (
            String firstName,
            String lastName,
            boolean gender,
            int age,
            String telephone,
            String email
    ){
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = gender;
        this.age = age;
        this.email = email;
    }
}

谢谢你,如果你需要更多的上下文来帮助我,请告诉我。

标签: java

解决方案


您缺少一个额外的构造函数,该构造函数在第 75 行中调用的构造函数使用的参数数量减少了。

将此添加到您的用户类:

  public User(String firstName, String lastName, String telephone, String email) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.telephone = telephone;
        this.email = email;
    }

此外,在主类中,您正在访问 firstName 和 EmergencyContact 字段,但这些是私有字段,因此请将它们设置为 public 或添加一个 setter 方法。


推荐阅读