我在我的动作监听器中做异常,我是这一切的新手,所以我需要帮助。
我尝试了很多方法,现在我要这样做:
JButton buttonIzracunaj = new JButton("Izra\u010Dunaj");
buttonIzracunaj.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
int danInt = Integer.parseInt(textFieldDan.getText());
int mjesecInt = Integer.parseInt(textFieldMjesec.getText());
int godinaInt = Integer.parseInt(textFieldGodina.getText());
if(danInt <= 31 && danInt > 0 && mjesecInt > 0 && mjesecInt <= 12 && godinaInt > 0)
{
int dan = danInt;
int mjesec = mjesecInt;
int godina = godinaInt;
}
String poruka = null;
if ((danInt<1) && (danInt > 31))
{
try {
throw PremaliBrojException;
} catch (Exception e) {
e.printStackTrace();
poruka = "Unijeli ste pogrešnu vrijednost.";
JOptionPane.showMessageDialog(null, poruka);
}
}
int proteiniInt = Integer.parseInt(textFieldProteini.getText());
int ugljikohidratiInt = Integer.parseInt(textFieldUgljikohidrati.getText());
int mastiInt = Integer.parseInt(textFieldMasti.getText());
int godineInt = Integer.parseInt(textFieldGodine.getText());
int masaInt = Integer.parseInt(textFieldMasa.getText());
int aktivnostInt = Integer.parseInt(textFieldDuljinaAktivnosti.getText());
int hrInt = Integer.parseInt(textFieldProsjecniHR.getText());
if(isMTrue)
{
if (godineInt > 0 && masaInt > 30 && aktivnostInt > 0 && hrInt > 0)
{
double brojKalorija = (double) (ugljikohidratiInt * 4 + proteiniInt * 4 + mastiInt * 4) - (((-55.0969 + (0.6309 * hrInt) + (0.1988 * masaInt) + (0.2017 * godineInt)) / 4.184) * aktivnostInt);
round(brojKalorija, 3, BigDecimal.ROUND_HALF_UP);
poruka = "U suficitu ste ~ " + brojKalorija + " kalorija.";
} else {
poruka = "Unijeli ste pogrešnu vrijednost.";
}
JOptionPane.showMessageDialog(null, poruka);
}
}
});
panelIzracun.add(buttonIzracunaj);
什么也没有发生,它计算正确,但我需要有例外。我应该把它放在动作监听器之外吗?甚至在初始化()之外?
public class PremaliBrojException extends RuntimeException{
private static final long serialVersionUID = 1L;
public PremaliBrojException(String message) {
super(message);
}
}