我的总结任务是创建一个计算用户BMI的应用程序。我应该使用GUI和if-else语句在2个度量系统(公制和英制)之间切换。
这有点像我的GUI外观:
名称:textfield1
以公制或(I)衡量的计量体系:textfield2
高度(M)或英寸(I):textfield3
输出:
我已经尝试了几乎可以在youtube上找到的所有方法并导致堆栈溢出,但是这些方法似乎都无法解决我的问题。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String strName;
strName=this.jTextField1.getText();
String strSystem = this.jTextField2.getText();
if(strSystem.equals("M"))
{
double height = Double.parseDouble(lblHeight.getText());
double weight = height*height*25;
this.lblOutput.setText(strName + "'s Ideal Weight is:" +
weight + "Kg");
}
else if(strSystem.equals("I"))
{
double height = Double.parseDouble(lblHeight.getText());
double weight = (height*height*25)/703;
this.lblOutput.setText(strName+ "'s Ideal Weight is:" +
weight + "lbs");
}
在textfield2中,用户应该写一个“ M”或“ I”以选择一种测量系统。该应用程序应该接受小写和大写字母(但我不知道该如何编码)。另外,第一个“ if”用黄色下划线显示,我看不出这是怎么回事。
编辑:我添加了以下建议,以解决大写情况。黄色的下划线不再显示,但是当我运行它时,输出中没有任何显示...我不知道我的代码有什么问题。请帮助我。
根据给定的公式,输出应该显示用户的姓名以及他们的理想体重。
ie;伊娃的理想体重是56.5公斤。
答案 0 :(得分:0)
要同时接受小写和大写字母,请使用toUpperCase
方法将文本从文本字段转换为大写字母,这样无论输入的字母是小写还是大写,您的if / else if语句都可以使用。改变这个
String strSystem = this.jTextField2.getText();
到
String strSystem = this.jTextField2.getText().toUpperCase();
@Bor Laze指出的另一种解决方案是使用equalsIgnoreCase
方法代替上述方法。因此,将if和else if语句更改为以下内容,
if(strSystem.equalsIgnoreCase("M"))
....
else if(strSystem.equalsIgnoreCase("I"))
....
答案 1 :(得分:0)
您将使用toLowerCase或toUpperCase将输入归一化为其中之一并执行检查。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String strName;
strName=this.jTextField1.getText();
String strSystem = this.jTextField2.getText().toUpperCase();
if(strSystem.equals("M"))
{
double height = Double.parseDouble(lblHeight.getText());
double weight = height*height*25;
this.lblOutput.setText(strName + "'s Ideal Weight is:" + weight + "Kg");
}
else if(strSystem.equals("I"))
{
double height = Double.parseDouble(lblHeight.getText());
double weight = (height*height*25)/703;
this.lblOutput.setText(strName+ "'s Ideal Weight is:" + weight + "lbs");
}