This question already has answers here:
Retrieving JTextField Contents Like Scanner
(2个答案)
5年前关闭。
我正在尝试了解扫描仪功能,但似乎无法理解。
我正在编写一个程序来计算BMI(体重指数),并且除无法进行计算外,实际上已经完成了!除了当我单击“确定”按钮时,一切都正常。
必须带走我的代码,这样我的同事才不会像过去那样复制我的代码,将在星期五后再次发布。
并使用try / catch处理解析异常
所以替换下面的代码
至
我试图运行您的程序,但出现异常,说->容器没有父属性。
所以我所做的是我在您的“确定”按钮动作监听器中添加了一个父容器
而且效果很好。
要添加的容器是
给你
但您已将null作为第一个参数。
所以它应该像下面
(2个答案)
5年前关闭。
我正在尝试了解扫描仪功能,但似乎无法理解。
我正在编写一个程序来计算BMI(体重指数),并且除无法进行计算外,实际上已经完成了!除了当我单击“确定”按钮时,一切都正常。
必须带走我的代码,这样我的同事才不会像过去那样复制我的代码,将在星期五后再次发布。
最佳答案
首先,Scanner没有任何问题,使用GUI时不需要这样做。
它仅对控制台输入/输出有用。
因此,当您获取文本时,它将采用字符串格式,因此将其解析为类似于
String val = txt1.getText();
double valueDouble = Double.parseDouble(val);
并使用try / catch处理解析异常
所以替换下面的代码
Scanner dado1 = new Scanner(txt1.getText());
System.out.println(dado1);
if(dado1.hasNextDouble()){
tamanho = dado1.nextDouble();
}
Scanner dado2 = new Scanner(txt2.getText());
if(dado2.hasNextDouble()){
peso = dado2.nextDouble();
}
至
String t1 = txt1.getText();
if(!"".equals(t1))
tamanho = Double.parseDouble(t1);
String t2 = txt2.getText();
if(!"".equals(t2))
peso = Double.parseDouble(t2);
我试图运行您的程序,但出现异常,说->容器没有父属性。
所以我所做的是我在您的“确定”按钮动作监听器中添加了一个父容器
而且效果很好。
要添加的容器是
final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
给你
JOptionPane.showInternalMessageDialog(desk,"Seu IMC é:"+ (result/ peso));
但您已将null作为第一个参数。
所以它应该像下面
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
String t1 = txt1.getText();
if(!"".equals(t1))
tamanho = Double.parseDouble(t1);
String t2 = txt2.getText();
if(!"".equals(t2))
peso = Double.parseDouble(t2);
result = tamanho*tamanho;
if (ok != null){
System.out.println(result);
System.out.println(peso);
final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
JOptionPane.showInternalMessageDialog(desk,"Seu IMC é:"+ (result/ peso));
}
}
});
08-05 12:02