java - 灾难管理类显示“无法应用于”用户 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;
}
}
谢谢你,如果你需要更多的上下文来帮助我,请告诉我。
解决方案
您缺少一个额外的构造函数,该构造函数在第 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 方法。
推荐阅读
- python-3.x - 试图从 dict.items() 返回值不起作用
- javascript - 如何检测不同的 File 对象引用同一个文件?
- python - Python - 在 ODE 中使用带积分的 odeint
- apache-kafka - Kafka暂停分区并花费很长时间(10分钟)再次恢复它
- sumo - 流动中不等间隔的车辆:SUMO
- python - Python:在导入的模块中构造模块变量的最佳方法
- excel - 如何在 Excel VBA 中输入时保持 Combobox 的焦点
- google-sheets - 如何在Google表格上跳过带有字符串的行时获得加权平均值?
- reactjs - TypeScript - 使用 Enzyme 调用 React 道具
- python - 输入 vim 文件和 tmux 时出错