构造函数错误 (JAVA)
Constructor error (JAVA)
所以我能够让我的第一个构造函数工作,但不是我的第二个 p2。对于 p2,我试图显示(字符串、字符串、字符串、双精度、双精度、字符串、字符串)。就目前而言,代码显示 "string cannot be converted to double" 错误,但我看不出我在做什么。
这是我的主要代码。
包装学生健康服务;
public class Studenthealthservices {
public static void main(String[] args) {
EMR p1 = new EMR("Colin","10-22-74");
System.out.printf(p1.toString());
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
System.out.printf(p2.toString());
}}
这是我的 EMR 代码 class
包装学生健康服务;
public class EMR {
private String name;
private String dob;
private String rfv;
private double bodyt;
private double hr;
private String diag;
private String pmeds;
public void setName(String name) {
this.name = name;
}
public EMR (String name, String dob) {
this.name = name;
this.dob = dob;
}
public String getName(){
return name;
}
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds){
this.name = name;
this.dob = dob;
this.rfv = rfv;
this.bodyt = bodyt;
this.hr = hr;
this.diag = diag;
this.pmeds = pmeds;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getRfv() {
return rfv;
}
public void setRfv(String rfv) {
this.rfv = rfv;
}
public double getBodyt() {
return bodyt;
}
public void setBodyt(double bodyt) {
this.bodyt = bodyt;
}
public double getHr() {
return hr;
}
public void setHr(double hr) {
this.hr = hr;
}
public String getDiag() {
return diag;
}
public void setDiag(String diag) {
this.diag = diag;
}
public String getPmeds() {
return pmeds;
}
public void setPmeds(String pmeds) {
this.pmeds = pmeds;
}
@Override
public String toString(){
return"name :" + this.name +"Date of Birth:" + this.dob;
}
}
"98"
是 String
,不是 double
。您需要删除引号:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache", 98, 120, "stress", "Tylenol");
将双精度值传递给方法(即构造函数)时,不能用引号将双精度值括起来,否则它们就是字符串。
这条线
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
正在调用此构造函数
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds)
值“98”和“120”都是字符串,而不是参数 bodyt 和 hr 的双精度值。
因此,将此行更改为
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98d, 120d, "stress", "Tylenol");
在这种情况下,double 的后缀 d 是可选的。您可以使用 98 和 120。
让我们看看这个声明:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
让我们看看您要调用的构造函数:
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds)
如您所见,构造函数期望 bodyt
和 hr
为 double
类型,但在您的语句中 98 和 120 具有 String
类型,因为引号(它们是字符串文字)。要使它们 double
只需删除引号:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98, 120, "stress", "Tylenol");
当您在 EMR 的构造函数中为对象 P2 传递值时,您在“”中传递了 98 和 120。
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
这些是 double 值,不应在 double 中传递 quotes.Change 你的代码到
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98, 120, "stress", "Tylenol");
所以我能够让我的第一个构造函数工作,但不是我的第二个 p2。对于 p2,我试图显示(字符串、字符串、字符串、双精度、双精度、字符串、字符串)。就目前而言,代码显示 "string cannot be converted to double" 错误,但我看不出我在做什么。
这是我的主要代码。 包装学生健康服务;
public class Studenthealthservices {
public static void main(String[] args) {
EMR p1 = new EMR("Colin","10-22-74");
System.out.printf(p1.toString());
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
System.out.printf(p2.toString());
}}
这是我的 EMR 代码 class 包装学生健康服务;
public class EMR {
private String name;
private String dob;
private String rfv;
private double bodyt;
private double hr;
private String diag;
private String pmeds;
public void setName(String name) {
this.name = name;
}
public EMR (String name, String dob) {
this.name = name;
this.dob = dob;
}
public String getName(){
return name;
}
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds){
this.name = name;
this.dob = dob;
this.rfv = rfv;
this.bodyt = bodyt;
this.hr = hr;
this.diag = diag;
this.pmeds = pmeds;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getRfv() {
return rfv;
}
public void setRfv(String rfv) {
this.rfv = rfv;
}
public double getBodyt() {
return bodyt;
}
public void setBodyt(double bodyt) {
this.bodyt = bodyt;
}
public double getHr() {
return hr;
}
public void setHr(double hr) {
this.hr = hr;
}
public String getDiag() {
return diag;
}
public void setDiag(String diag) {
this.diag = diag;
}
public String getPmeds() {
return pmeds;
}
public void setPmeds(String pmeds) {
this.pmeds = pmeds;
}
@Override
public String toString(){
return"name :" + this.name +"Date of Birth:" + this.dob;
}
}
"98"
是 String
,不是 double
。您需要删除引号:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache", 98, 120, "stress", "Tylenol");
将双精度值传递给方法(即构造函数)时,不能用引号将双精度值括起来,否则它们就是字符串。
这条线
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
正在调用此构造函数
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds)
值“98”和“120”都是字符串,而不是参数 bodyt 和 hr 的双精度值。
因此,将此行更改为
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98d, 120d, "stress", "Tylenol");
在这种情况下,double 的后缀 d 是可选的。您可以使用 98 和 120。
让我们看看这个声明:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
让我们看看您要调用的构造函数:
public EMR (String name, String dob, String rfv, double bodyt, double hr, String diag, String pmeds)
如您所见,构造函数期望 bodyt
和 hr
为 double
类型,但在您的语句中 98 和 120 具有 String
类型,因为引号(它们是字符串文字)。要使它们 double
只需删除引号:
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98, 120, "stress", "Tylenol");
当您在 EMR 的构造函数中为对象 P2 传递值时,您在“”中传递了 98 和 120。
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache","98", "120", "stress", "Tylenol");
这些是 double 值,不应在 double 中传递 quotes.Change 你的代码到
EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98, 120, "stress", "Tylenol");