Java 带GUI框的BMI计算器

Java 带GUI框的BMI计算器,java,user-interface,Java,User Interface,所以我有一个任务,我必须创建一个BMI计算器,带有输入和输出框。 我的问题是它给了我一个答案。我搜索了这个网站和其他网站,发现问题在于: private static double input() { // TODO Auto-generated method stub return 0; } 如果我改变值,它会给我一个数字,但不是我要找的数字。其他一切都正常,只是输出中的一点让我烦恼 import static javax.swing.JOptionPane.*; public clas

所以我有一个任务,我必须创建一个BMI计算器,带有输入和输出框。 我的问题是它给了我一个答案。我搜索了这个网站和其他网站,发现问题在于:

 private static double input() {
// TODO Auto-generated method stub
return 0;
}
如果我改变值,它会给我一个数字,但不是我要找的数字。其他一切都正常,只是输出中的一点让我烦恼

import static javax.swing.JOptionPane.*;

public class BMI_GUI {
private static String input;

public static void main(String[] args){

    double vikt;
    double langd;
    double bmi;

    setInput(showInputDialog("Din vikt i kg: "));
    vikt = input();

    setInput(showInputDialog("Din längd i m (med ett komma): "));
    langd = input();

    bmi = (vikt / (langd*langd));
    JOptionPane.showMessageDialog(null, "Din BMI är " + bmi);

    System.out.println("BMI Värden\n");
    System.out.println("Undervikt: Under 18.5");
    System.out.println("Normal: 18.5 - 24.9");
    System.out.println("Övervikt: 25 - 29.9");
    System.out.println("Fetma: 30 eller över");

    }

    private static double input() {
    // TODO Auto-generated method stub
    return 0;
    }

    public static String getInput() {
    return input;
    }

    public static void setInput(String input) {
    BMI_GUI.input = input;
    }

}

这里有一些问题。您没有在计算中引用要引用的变量(
length
width
),您正在调用一个空的
input()
方法,该方法对您没有任何作用,因此您可以完全摆脱它。
getInput()
方法也是如此。由于您已经在将输入读入
BMI_GUI
的静态
input
字符串中,只需对其进行双重解析即可。这是可行的,但理想情况下,您也应该添加错误检查-如果您输入的是
字符串而不是可以解析为
双精度的数字,该怎么办?您应该处理
NumberFormatException
——可能会重新向用户请求刚才请求的相同输入

public static void main(String[] args) {

    double bmi = 0.0;

    setInput(showInputDialog("Your weight in kg: "));
    double weight = Double.parseDouble(input);

    setInput(showInputDialog("Your length in m (with a comma): "));
    double length = Double.parseDouble(input);

    bmi = (weight / (length * length));
你可能想要

private static double input() {
    // TODO Auto-generated method stub
    return Double.parseDouble(getInput());
}

你将重量除以0。“其他一切都有效”-其实不是。您实际上没有使用来自用户的任何输入。见鬼,你甚至没有使用
vikt
langd
——你使用的是
weight
length
变量,它们只是硬编码为0。