构造函数错误(JAVA)

构造函数错误(JAVA),java,constructor,Java,Constructor,因此,我能够让我的第一个构造函数工作,但不是我的第二个p2构造函数。对于p2,我试图显示string,string,string,double,double,string,string。目前代码显示一个错误,字符串不能转换为double,但我不知道我是怎么做的 这是我的主要代码。 一揽子研究健康服务 public class Studenthealthservices { public static void main(String[] args) { EMR

因此,我能够让我的第一个构造函数工作,但不是我的第二个p2构造函数。对于p2,我试图显示string,string,string,double,double,string,string。目前代码显示一个错误,字符串不能转换为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());

    }}
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;
    }
}
这是我的EMR课程代码 一揽子研究健康服务

    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());

    }}
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是一个字符串,不是双精度的。您需要删除引号:

 EMR p2 = new EMR("Anquan","9-30-77", "stomach ache", 98, 120, "stress", "Tylenol");
98是一个字符串,不是双精度的。您需要删除引号:

 EMR p2 = new EMR("Anquan","9-30-77", "stomach ache", 98, 120, "stress", "Tylenol");

当您将double传递给方法(即构造函数)时,不能用引号括住double,否则它们是字符串

将double传递给方法(即构造函数)时,不能用引号括住double,否则它们是字符串

在这条线上

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");
在这种情况下,双精度的后缀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)
值98和120都是字符串,而不是参数bodyt和hr的两倍

所以,把这行改成

EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98d, 120d, "stress", "Tylenol");

在这种情况下,双精度的后缀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是双精度类型,但在您的语句中98和120是字符串类型,因为引号是字符串文本。要使它们加倍,只需删除引号:

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)
正如您所看到的,构造函数希望bodyt和hr是双精度类型,但在您的语句中98和120是字符串类型,因为引号是字符串文本。要使它们加倍,只需删除引号:

EMR p2 = new EMR("Anquan","9-30-77", "stomach ache",98, 120, "stress", "Tylenol");

在对象P2的EMR构造函数中传递值时,在内部传递98和120

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");

在对象P2的EMR构造函数中传递值时,在内部传递98和120

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");

当涉及到需要许多参数的构造函数和方法时,一个好的经验法则不止3个或4个,最好将参数分组到一个新类型中,并将该类型的实例作为单个参数传递,或者使用生成器模式。当涉及到需要许多参数的构造函数和方法时,一个好的经验法则更有用与3或4相比,最好将参数分组为一个新类型,并将该类型的实例作为单个参数传递,或者使用生成器模式。对于双Java类,甚至可能是98d/120d或98d/120d小写d,对于双Java类,甚至可能是98d/120d或98d/120d小写d,对于双Java类,甚至可能是98d/120d或98d/120d大写d双Java类