问答题

下面是一个Applet程序,其功能是输入3个双精度浮点数:a,b,c,构成一个一元二次方程,a*x*x+b*x+c=0,其判别式 d=b*b-4*a*c,若d为负数则输出“没有实根”,否则打印出2个实根。要求,有3个输入框,输入a,b,c,一个按钮,点击实现求根过程,一个不可编辑的文本区,用作输出结果。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 程序运行结果如下:
import java.io.*; import java.awt.*; import java.awt.event.*; import.java.applet.Applet; /* <applet code="ex21_3.class" width=800 height=400> </applet> */ public class ex21_3 extends Applet implements ActionListener{ Panel pane=new Panel(); Label 11 = new Label("a:"); TextField tf1 = new TextField(5); Label 12 = new Label("b:"); TextField tf2 = new TextField(5); Label 13 = new Label("c:"); TextField tf3 = new TextField(5); Button btn = new Button("OK"); Label 14=new Label("答案:"); TextField tf4=new TextField(20); ex21_3 obj21_3; public void init(){ pane.setLayout(new FlowLayout(FlowLayout.LEFT, 10,5)); pane.add(11); pane.add(tf1); pane.add(12); pane.add(tf2); add("North",pane); Panel p2=new Panel(); p2.setLayout(new FlowLayout(FlowLayout.LEFT,10,5)); p2.add(13); p2.add(tf3); p2.add(btn); btn.addActionListener(this); add("Center",p2); Panel p3=new Panel(); p3.setLayout(new FlowLayout(FlowLayout.LEFT,10,5)); p3.add(14); tf4.setEditable(false); p3.add(tf4); add("South",p3); obj21_3=new ex21_3(); } public void doReal(double a1,double a2,double a3,TextField tf) { double d,x1,x2; d=a1*a1-4.0*a2*a3; if(d>=0.0){ x1=(-a2+Math.sqrt(d))/(2.0*a1); x2=(-a2+Math.sqrt(d))/(2.0*a1); tf.setText("2个实根: x1="+x1+"\nx2="+x2); } else{ tf.setText("没有实根! "); } } public void actionPerformed(ActionEvent ae) { double a,b,c; try{ a=new Double(tf1.getText()).doubleValue(); b=new Double(tf2.getText()).doubleValue(); c=new Double(tf3.getText()).doubleValue(); obj21_3.doReal(a,b,c,14); }catch(NumberFormatException nfe){ tf4.setText("wrong number!"); } } } ex21_3.htm1 <HTML> <HEAD> <TITLE>ex21_3</TITLE> </HEAD> <BODY> <applet code="ex21_3.class" width=800 height=400 > </applet> </BODY> </HTML>

【参考答案】

d=a2*a2-4.0*a1*a3 x2=(-a2-Math.sqrt(d))/(2.0*a1) obj21_3.doR......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题