下面是一个Applet程序,其功能是计算山顶的高度,计算方法是:该山顶由a点量得仰角度数为a度,由b点量得仰角度数为b度,且测得a,b点之间的距离为c米,求山的高度。要求窗口中有3个输入框,分别作为a,b,c的输入,一个按钮点击后进行计算,结果显示在另一个

admin2009-12-22  23

问题 下面是一个Applet程序,其功能是计算山顶的高度,计算方法是:该山顶由a点量得仰角度数为a度,由b点量得仰角度数为b度,且测得a,b点之间的距离为c米,求山的高度。要求窗口中有3个输入框,分别作为a,b,c的输入,一个按钮点击后进行计算,结果显示在另一个文本框中(这个文本框不可编辑)。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   源程序文件代码清单如下:
   import java.io.*;
   import java.awt.*;
   import java.awt.event.*;
   import java.applet.Applet;
   /*
   <applet code="ex6_3.class" width=800 height=400 >
   </applet>
   */
   public class ex6_3 extends Applet implements ActionListener
   {
       Panel pane=new Panel();
       Label 11 = new Label("a 点仰角:");
       TextField tfl = new TextField(5);
       Label 12 = new Label("b 点仰角:");
       TextField tf2 = new TextField(5);
       Label 13 = new Label("a,b 之间距离:");
       TextField tf3 = new TextField(5);
       Button btn = new Button("OK");
   Label 14=new Label ("山高");
   TextField tf4=new TextField(20);
   ex6_3 obj23_3;
   public void init()
   {
      pane.setLayout (new FiowLayout(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 (true);
      p3.add(tf4);
      add ("South", p3);
      obj23_3=new ex6_3();
   }
   public void doMessure(double al,double a2,double a3,TextField tf)
   {
      double pi=Math. PI,a,b,h;
      a=al*pi/180.0;
      b=a2*pi/180.0;
      h=a3/(1.0/Math. tan (a) -1.0/Math. tan (b));
      tf.setText (Integer.toString(h));
   }
   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
              obj23_3.doMessure(a,b,c, tf4);
      }catch (NumberFormatException nfe)
      {
              tf4.setText("wrong number!");
              }
      }
   }
   ex6_3. html
   <HTML>
      <HEAD>
          <TITLE>ex6_3</TITLE>
      </HEAD>
      <BODY>
          <applet code="ex6_3.class" width=800 height=400 >
          </applet>
   </BODY>
</HTML>

选项

答案tf4.setEditable(false) h=a3/Math.abs(1.0/Math.tan(a)-1.0/Math.tan(b)) tf.setText(Double.toString(h))

解析 本题主要考查Applet窗口编程和AWT基本构件的使用以及事件处理机制。解题关键是设计出计算山高的方法,并且结合事件处理机制,调用该计算方法实现程序的功能。本题中,第1处,由于用显示结果的文本框不可编辑,因此参数为false;第2处,需要对分母进行取绝对值操作,否则最后结果会产生负数;第3处,由于h是double类型的变量,做数据类型转换时需要调用Double类的toString()方法。
转载请注明原文地址:https://jikaoti.com/ti/MQb0FFFM
0

最新回复(0)