Java学习——95.解一元二次方程
一元二次方程,即数学里如下形式的方程:
其计算结果为:
公式虽然好背,但实际计算时,反正我读初高中的时候很讨厌的,总是算不对,但是学了Java后发现,真是不难啊,写代码比计算这样的方程式简单多了。只需写一次,要计算的时候直接运行就行了。
其代码如下:
import java.util.*;
public class yiyuan {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入系数a:");
double a=sc.nextDouble();
System.out.print("请输入系数b:");
double b=sc.nextDouble();
System.out.print("请输入系数c:");
double c=sc.nextDouble();
double x1=(-b+Math.sqrt(Math.pow(b, 2)-4*a*c))/(2*a);
double x2=(-b-Math.sqrt(Math.pow(b, 2)-4*a*c))/(2*a);
System.out.println("x1="+x1+",x2="+x2);
sc.close();
}
}
其运行结果如下:
也可改成图形用户界面,用得更加得心应手,只是在第一次写的时候花点时间。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//y=a^2+b*x+c
public class yiyuan extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JTextField a,b,c;
private JButton button;
private JTextArea text;
public yiyuan() {
super("求解一元二次方程");
this.setVisible(true);
this.setSize(240,240);
this.setLocation(200,200);
JPanel p=new JPanel();
JLabel label1=new JLabel("求一元二次方程:ax^2+bx+c=0的值");
JLabel label2=new JLabel("这里的^表示乘方");
label2.setForeground(Color.blue);
p.add(label1);
p.add(label2);
this.getContentPane().add(p,"North");
JPanel p1=new JPanel();
p1.add(new JLabel("请输入系数a:"));
a=new JTextField(10);
p1.add(a);
p1.add(new JLabel("请输入系数b:"));
b=new JTextField(10);
p1.add(b);
p1.add(new JLabel("请输入系数c:"));
c=new JTextField(10);
p1.add(c);
button=new JButton("计算");
button.addActionListener(this);
p1.add(button,"");
this.getContentPane().add(p1);
text=new JTextArea();
this.getContentPane().add(text,"South");
}
public static void main(String args[]) {
new yiyuan();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
double ax,bx,cx;
if(a.getText().equals("")||b.getText().equals("")||c.getText().equals("")) {
text.setText("请输入系数");
text.setForeground(Color.red);
}
else {
ax=Double.parseDouble(a.getText());
bx=Double.parseDouble(b.getText());
cx=Double.parseDouble(c.getText());
double x1=(-bx+Math.sqrt(Math.pow(bx, 2)-4*ax*cx))/(2*ax);
double x2=(-bx-Math.sqrt(Math.pow(bx, 2)-4*ax*cx))/(2*ax);
text.setForeground(Color.black);
text.setText("方程"+a.getText()+"x^2+"+b.getText()+"x+"+c.getText()+"的值为:\nx1="+x1+"\nx2="+x2);
a.setText("");
b.setText("");
c.setText("");
}
}
}
其运行结果如下:
如果输入的时候为空,会有提示:
也会存在没有解的情况,如:
因为在程序中,计算的动作事件中设置了将三个文本框中的数据清空,所以本图中的三个文本框为空。