我试图制作一个可以执行二次公式的程序。我也已经作为一个控制台程序完成了它,并且它可以工作,但是现在我想使用GUI来完成。现在我的问题是,它仅显示NaN。我已经从工作控制台程序中复制了公式,所以这不是问题。我认为它必须与解析有关。在这里您可以看到代码:
@FunctionalInterface
public interface VargsFunction<T,R> {
@SuppressWarnings("unchecked")
R apply(T... t);
}
如果您能帮助我,我会很高兴,因为我试图解决问题大约5小时,这简直使我沮丧。
谢谢
答案 0 :(得分:0)
据我所知道的格式,计算值的代码不在任何事件处理程序中。这是程序的一个版本,它使用一个面板和一个按钮进行计算。 (请记住,并非所有输入都会产生结果。您不能取负数的平方根)
public void launchScreen() {
JFrame frame = new JFrame("Mitternachtsformel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
//panel erstellen
JPanel panel = new JPanel();
panel.setSize(500, 500);
panel.setBackground(Color.white);
// Using a grid layout instead of multiple panels
GridLayout layout = new GridLayout(0,2);
panel.setLayout(layout);
JTextField text1 = new JTextField(10);
JTextField text2 = new JTextField(10);
JTextField text3 = new JTextField(10);
JTextField result = new JTextField(10);
JButton solveButton = new JButton("Solve");
// Do the calculation when the "Solve" button is pressed
solveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
try {
double aZahl = Double.parseDouble(text1.getText());
double bZahl = Double.parseDouble(text2.getText());
double cZahl = Double.parseDouble(text3.getText());
double x1 = (-bZahl + (Math.sqrt((bZahl*bZahl) - 4 * aZahl *cZahl))) / (2*aZahl);
double x2 = (-bZahl - (Math.sqrt((bZahl*bZahl) - 4 * aZahl *cZahl))) / (2*aZahl);
result.setText(x1 + ", " + x2);
}
catch(Exception ex) {
result.setText("ERROR: " + ex.getMessage());
}
}
});
panel.add(new JLabel("Geben sie einen Wert für a an: "));
panel.add(text1);
panel.add(new JLabel("Geben sie einen Wert für b an: "));
panel.add(text2);
panel.add(new JLabel("Geben sie einen Wert für c an: "));
panel.add(text3);
panel.add(solveButton);
panel.add(result);
frame.add(panel);
frame.setVisible(true);
}