对于new ActionListener(){}类型,方法xy(double,...)未定义

时间:2013-06-25 00:07:25

标签: java methods undefined

我正在尝试使用此方法在文件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;
}

}

2 个答案:

答案 0 :(得分:1)

该行

Podaci noviPodaci = new Podaci(...);

无法发出错误消息,指出无法找到名为“Pocaci”的方法。 Java编译器应该知道new Podaci(...)指的是构造函数而不是方法。

我能想到的唯一解释是:

  • 发生错误消息的文件中的某些早期语法错误会让编译器彻底混淆。补救措施:修复之前的错误!!

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

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

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

答案 1 :(得分:0)

似乎问题在于您传递给方法的某个变量的定义。检查或发布每个初始化的位置...确保它们都是INT。