【分析解答题】
下面是一个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 jav
A、io.*; import jav
A、awt.*; import jav
A、awt.event.*; import.jav
A、applet.Applet; /* <applet code="ex21_3.class" width=800 height=400> </applet> */ public class ex21_3 extendsApplet implementsActionListener{ 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 = newButton("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;{{U}}d=a1*a1-4.0*a2*a3{{/U}};if(d>=0.0){x1=(-a2+Math.sqrt(d))/(2.0*a1);{{U}}x2=(-a2+Math.sqrt(d))/(2.0*a1);{{/U}}tf.setText("2个实根: x1="+x1+"\nx2="+x2);} else{tf.setText("没有实根! ");}}public void actionPerformedActionEvent ae) {double a,b,c;try{a=newDouble(tf1.getText()).doubleValue();b=newDouble(tf2.getText()).doubleValue();c=newDouble(tf3.getText()).doubleValue();{{U}}obj21_3.doReal(a,b,c,14){{/U}};}catch(NumberFormatException nfe){tf4.setText("wrong number!");}} } {{B}}ex21_3.htm1{{/B}} <HTML><HEAD> <TITLE>ex21_3</TITLE></HEAD><BODY><applet code="ex21_3.class" width=800 height=400 ></applet></BODY> </HTML>