一个计算BMI的小程序 bmi=体重/(身高*身高)
有2个问题1。这个程序有时候会莫名的跳错误 然后随便删个不相干的符号又好了 怎么回事?Exception in thread "main" java.lang.NoSuchMethodError
at chapt01.BMI.<init>(BMI.java:28)
at chapt01.BMI.main(BMI.java:12)2. 我现在想增加一个英尺和英镑的计算进去 在输入的时候可以输入公斤和米 也可以输入英镑和英尺 
kilograms = 2.2 * pounds
meters = 39.36 * inches求修改!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;//////////////////////////////////////////////////////////////class BMI
class BMI extends JFrame {//=============================================== static method main
 public static void main(String[] args) {
     BMI window = new BMI();
     window.setVisible(true);
 }
 //=============================================== instance variables
 // Declare and initialize instance variables that are
 // referred to when the program is running.
 private JTextField _mField   = new JTextField(4);  // height
 private JTextField _kgField  = new JTextField(4);  // weight
 //private JTextField poundField   = new JTextField(4);  // height
 //private JTextField inchesField  = new JTextField(4);  // weight
 private JTextField _bmiField = new JTextField(4);  // BMI
 private JTextField messageField = new JTextField(30);
 //====================================================== constructor
 public BMI() {
     //... Create button and add action listener.
     JButton bmiButton = new JButton("Compute BMI");
     bmiButton.addActionListener(new BMIListener());     //... Set layout and add components.
     JPanel content = new JPanel();
     content.setLayout(new FlowLayout());
     content.add(new JLabel("Weight in kilograms"));
     content.add(_kgField);
     content.add(new JLabel("Height in meters"));
     content.add(_mField);
     content.add(bmiButton);
     content.add(new JLabel("Your BMI is"));
     content.add(_bmiField);
     content.add(messageField);
     //... Set the window characteristics.
     setContentPane(content);
     setTitle("Body Mass Index");
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     pack();                          // Do layout.
     setLocationRelativeTo(null);     // Center window.
 }
 //////////////////////////////////////////// inner class BMIListener
 // Inner class is used to access components.
 // BMI is converted to int to eliminate excess "accuracy".
 private class BMIListener implements ActionListener {
     public void actionPerformed(ActionEvent e) {
         double kilograms = Double.parseDouble(_kgField.getText());
         double meters    = Double.parseDouble(_mField.getText());
         int    bmi       = (int)computeBMI(kilograms, meters);
         _bmiField.setText("" + bmi);
         
         if(bmi<20) 
          messageField.setText("BMI is too low for optimum health.");
          else if(20<=bmi && bmi<22){
           messageField.setText("BMI is low but not a health risk.");
         }else if(bmi>=22 && bmi<=25){
         messageField.setText("Congratulations for an ideal BMI.");
         }else if(bmi>25 && bmi<=27){
         messageField.setText("BMI high but not a health risk.");
         }else if(bmi>27){
         messageField.setText("BMI is too high for optimum health.");
         }
     }
 }
 //=========================================== logic method computeBMI
 public static double computeBMI(double weight, double height) {
     return weight / (height * height);
 }
}