身体质量指数计算器 - 错误

时间:2017-01-21 21:42:14

标签: java

我正在创建一个体重指数计算器来练习创建GUI。但是,我无法弄清楚为什么我会收到下面显示的错误。我在想我正试图错误地显示BMI的值。有人可以帮忙吗?

  

线程“main”中的异常java.lang.NullPointerException at   来源。(Source.java:21)在Main.main(Main.java:5)

import javax.swing.JFrame; 

public class Main {
public static void main (String args []) {
    Source sourceObject = new Source();
    sourceObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    sourceObject.setSize(275,180); 
    sourceObject.setVisible(true); 

}

}

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane;

public class Source extends JFrame { 

private JLabel item1;
private JLabel item2;
private JLabel item3;
private String weight, height;
private int BMI;

public Source () {
    super("Title"); 
    setLayout(new FlowLayout()); 
    item1 = new JLabel("Text"); 
    item1.setToolTipText("This appears on hover"); 
    weight = JOptionPane.showInputDialog(null, "Weight: ");
    height = JOptionPane.showInputDialog(null, "Height: ");
    item3.setText(String.valueOf(BMI));
    add(item1);
    add(item2);
    add(item3);

}
int BMICalc() {
    int weig = Integer.parseInt(weight);
    int heig = Integer.parseInt(height);
    int BMI = (weig)/(heig * heig);
    return BMI;

}


}

2 个答案:

答案 0 :(得分:1)

实际上item2item3已声明,但从未实例化。

但实际问题是你在item3上调用方法。

实例化Source构造函数中具有已知值的所有字段。

答案 1 :(得分:0)

你错过了创建JLabel 2和3.试试这个:

public Source () {
    super("Title"); 
    setLayout(new FlowLayout()); 
    item1 = new JLabel("Text"); 
    item1.setToolTipText("This appears on hover"); 

    item2 = new JLabel("Text");

    weight = JOptionPane.showInputDialog(null, "Weight: ");
    height = JOptionPane.showInputDialog(null, "Height: ");
    BMICalc();        

    item3 = new JLabel("Text");
    item3.setText(String.valueOf(BMI));
    add(item1);
    add(item2);
    add(item3);
}