1

我正在尝试使用此方法在文件 podaci.java 中保存我的数据:

public Podaci(double brojKalorijaId, int dan, int mjesec, int godina, int proteini,
            int ugljikohidrati, int masti, int godine, int masa, int aktivnost, int hr) {
    this.brojKalorijaId = brojKalorijaId;
    this.dan = dan;
    this.mjesec = mjesec;
    this.godina = godina;
    this.proteini = proteini;
    this.ugljikohidrati = ugljikohidrati;
    this.masti = masti;
    this.godine = godine;
    this.masa = masa;
    this.aktivnost = aktivnost;
    this.hr = hr;
}

我在其他 .java 文件中调用了这样的方法:

double brojKalorija = (double) (ugljikohidratiInt * 4
                                + proteiniInt * 4 + mastiInt * 4)
                                - (((-20.4022 + (0.4472 * hrInt)
                                        - (0.1263 * masaInt) + (0.074 * godineInt)) / 4.184) * aktivnostInt);

brojKalorija = round(brojKalorija, 2,
        BigDecimal.ROUND_HALF_UP);

poruka = "U suficitu ste ~ " + brojKalorija
        + " kalorija.";
JOptionPane.showMessageDialog(null, poruka);

/*here is error*/ Podaci noviPodaci = new Podaci(brojKalorija, danInt,
        mjesecInt, godinaInt, proteiniInt,
        ugljikohidratiInt, mastiInt, godineInt,
        masaInt, aktivnostInt, hrInt);
DatabaseUtils.spremiPodatke(noviPodaci);

错误说:

The method Podaci(double, int, int, int, int, int, int, int, int, int, int) is undefined for the type new ActionListener(){}

为什么我会收到此错误?

编辑:podaci.java 代码在这里,我尝试将 double 更改为 BigDecimal,但没有用

package podaci;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity

@Table(name = "podaci.podaci_izracuna")

public class Podaci {

    @Id
@Column(name = "brojKalorija_ID")
@GeneratedValue
private double brojKalorijaId;

@Column(name = "dan")
private int dan;

@Column(name = "mjesec")
private int mjesec;

@Column(name = "godina")
private int godina;

@Column(name = "proteini")
private int proteini;

@Column(name = "ugljikohidrati")
private int ugljikohidrati;

@Column(name = "masti")
private int masti;

@Column(name = "godine")
private int godine;

@Column(name = "masa")
private int masa;

@Column(name = "aktivnost")
private int aktivnost;

@Column(name = "heartRate")
private int hr;

public Podaci(double brojKalorijaId, int dan, int mjesec, int godina, int proteini,
        int ugljikohidrati, int masti, int godine, int masa, int aktivnost, int hr) {
        this.brojKalorijaId = brojKalorijaId;
        this.dan = dan;
        this.mjesec = mjesec;
        this.godina = godina;
        this.proteini = proteini;
        this.ugljikohidrati = ugljikohidrati;
        this.masti = masti;
        this.godine = godine;
        this.masa = masa;
        this.aktivnost = aktivnost;
        this.hr = hr;

}

public Podaci() {}

public double getBrojKalorijaId() {
    return brojKalorijaId;
}

public int getDan() {
    return dan;
}

public int getMjesec() {
    return mjesec;
}

public int getGodina() {
    return godina;
}

public int getProteini() {
    return proteini;
}

public int getUgljikohidrati() {
    return ugljikohidrati;
}

public int getMasti() {
    return masti;
}

public int getGodine() {
    return godine;
}

public int getMasa() {
    return masa;
}

public int getAktivnost() {
    return aktivnost;
}

public int getHr() {
    return hr;
}

}

4

2 回答 2

1

线

Podaci noviPodaci = new Podaci(...);

不能给出一条错误消息,指出它找不到名为 'Pocaci' 的方法。Java 编译器应该知道这new Podaci(...)是指构造函数而不是方法。

我能想到的唯一解释是:

  • 出现错误消息的文件中的一些较早的语法错误使编译器彻底困惑。解决方法:修复之前的错误!!

  • 您的 IDE 很混乱。补救措施:尝试重新启动 IDE 并“刷新”,然后重新编译所有相关文件。

  • 您正在编译的代码与您看到的代码不同......并向我们展示。

  • 您错误地转录了错误消息。

于 2013-06-25T01:05:24.350 回答
0

似乎问题出在您传递给该方法的变量之一的定义中。检查或发布初始化它们的位置...确保它们都是 INT。

于 2013-06-25T01:11:01.233 回答