构造函数错误 (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”都是字符串,而不是参数 bodythr 的双精度值。

因此,将此行更改为

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)

如您所见,构造函数期望 bodythrdouble 类型,但在您的语句中 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");