一个计算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);
}
}
有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);
}
}
你看看你的path跟classpath的路径前面有没有加上.;这两个符号!
希望能有所帮助!