Java学习——96.一元二次方程的判断

对于昨天的一元二次方程,在输入的系数不正确时,在代码中并没有进行判断其是否为一元二次方程,而是直接进行求解。

但是在其求解之前,还应该判断一下系数是否正确。

比如当输入的a为0时,此是一个一元一次方程,只有一个解,其值为:x=-c/b。

当a不为0时,要判断其有没有实数根,即判断

的值是否大于0。

(1)如果大于0,其有两个实根,其解为昨天所示。

(2)如果等于0,其有两个相等的实根;

(3)如果小于0,其没有实数根。

本篇只用了图形用户界面方法,其运行结果如下:

(1)输入 a为0时:

(2)有两个实根的情况 :

(3)两个相等实根的情况:

(4)没有实数根的情况:

其完整代码如下:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

//y=a^2+b*x+c

publicclass yiyuan extends JFrame implements ActionListener{

privatestaticfinallongserialVersionUID = 1L;

private JTextField a,b,c;

private JButton button;

private JTextArea text;

public yiyuan() {

super("求解一元二次方程");

this.setVisible(true);

this.setSize(260,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");

}

publicstaticvoid main(String args[]) {

new yiyuan();

}

@Override

publicvoid actionPerformed(ActionEvent arg0) {

// TODO Auto-generatedmethod 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());

if(ax==0){

text.setText("此方程不是一元二次方程,而是一元一次方程!\n其x的解为:x="+(-cx)/bx);

text.setForeground(Color.blue);

}

else{

double r=Math.sqrt(Math.pow(bx, 2)-4*ax*cx);

if(r>0){

double x1=(-bx+r)/(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("");

}

elseif(r==0){

double x1=(-bx)/(2*ax);

text.setText("此方程有两个相等的实根,x1=x2="+x1);

}

else{

text.setText("此方程没有实数根");

text.setForeground(Color.green);

}

}

}

}

}

(0)

相关推荐