**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
13天前关门了。
改进这个问题
我试图用两个不同的jtextfield来制作一个gui,计算一个egfr值需要这个输入。在方法中打印egfr时 calcAndSetTotal()
,我得到了正确的计算结果(egfr的值),但是当我返回egfr并调用 calcAndSetTotal()
在main中并尝试打印它,即使我将所有输入值都传递到double中,也会得到值“egfr=nan”。
package NyreFunktion;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class calculation {
public JFrame frame;
public JTextField textField;
public JTextField textField_1;
public double højde;
public double kreatinin;
double eGFR=0;
public static void main(String[] args) throws InterruptedException {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
calculation window = new calculation();
window.frame.setVisible(true);
double value=window.eGFR;
System.out.println(value);
} catch (Exception e) {
e.printStackTrace();
}
}
});
calculation cl= new calculation();
cl.initialize();
cl.calcAndSetTotal();
System.out.println("test=" +cl.calcAndSetTotal());
}
public calculation() {
initialize();
}
public void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(Color.WHITE);
frame.setBounds(100, 100, 450, 450);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textField = new JTextField();
textField.setBounds(121, 114, 130, 26);
frame.getContentPane().add(textField);
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
højde =Double.parseDouble(textField.getText());
System.out.println("Højde: " + højde);
calcAndSetTotal();
}
});
textField_1 = new JTextField();
textField_1.setBounds(121, 188, 130, 26);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
textField_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent eventt) {
kreatinin =Double.parseDouble(textField_1.getText());
System.out.println("kreatinin: " + kreatinin);
calcAndSetTotal();
}
});
}
double calcAndSetTotal() {
eGFR = højde/kreatinin;
System.out.println("GFR" + " " + "=" + " " + eGFR);
return eGFR;
}
}
2条答案
按热度按时间gwo2fgha1#
(我假设在您的真实代码中
public class calculation {
后一行import
声明。)真正的问题是您的代码使用了
calculation
班级。第一个
calculation
在中创建的示例run()
方法并将其设置为可见。第二个
calculation
在中创建的示例main
方法本身,不要将其设置为可见。第一个示例是在gui中输入文本时正在更新的示例,等等。
第二个示例是您用来获取
eGFR
你正在打印的。但由于这个示例从来都不可见:无法调用其文本框的操作侦听器,因此
它
højde
以及kreatinin
字段不能更改其默认值;即0.0
以及0.0
,因此你计算
0.0 / 0.0
因此NaN
在中写入标准输出main
.oug3syen2#
你的代码有点问题。
首先,我认为你在计算中犯了一个错误,忘记了计算
public calculation()
使用类定义你不需要打电话
现在有两个示例运行在同一个类中而不可见。这也是导致
NaN
因为你被零除了。我可以给你一个提示,就是检查用户输入的除法。希望这有帮助
编辑
在对问题有了更好的理解之后,这更像是一种行为