我正在创建一个体重指数计算器来练习创建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;
}
}
答案 0 :(得分:1)
实际上item2
和item3
已声明,但从未实例化。
但实际问题是你在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);
}