下面是一个Applet程序,其功能是从3~100之间(包括3和100)每隔0.5秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。

admin2009-01-15  58

问题 下面是一个Applet程序,其功能是从3~100之间(包括3和100)每隔0.5秒显示一个新的数字,如果数字为素数,则显示为灰色,其他为绿色。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   源程序文件代码清单如下:
   import java.awt.*;
   import java.applet.Applet;
   /*
    <applet code=ex15_3.class width=800 height=400>
         </applet>
   */
   public class ex15_3 extends Applet
   {
       public Color color15_3 = Color.black;
       private int n15_3 = 3;
       public myPrime   thPrime15_3;
       public void init()
   {
           thPrime15_3 = new myPrime(this);
           thPrime15_3.start();
       }
       public void paint(Graphics g)
   {
           g.setColor(color15_3);
           g.drawString(n15_3, 50, 50);
   }
       public int getInt()
   {
         return n15_3;
       }
   public void setInt(int i)
   {
         n15_3=i;
       }
   }
   class myPrime extends Thread
   {
       ex15_3 obj15_3;
       myPrime (ex15_3 o)
   {
           this.obj15_3 = o;
   }
   public boolean isPrime(int n)
   {
       boolean bPrime = true;
       int i=2;
           if(n<3||n>100)
           return false;
           while(i<n-1&&bPrime)
       {
           if ((n % i) == 0)
                       bPrime = false;
               i++;
               }
           return bPrime;
       }
       public void run()
       {
               int i;
               for (i=3;i<100; i++)
           {
               if (isPrime(i))
                   obj15_3.color15_3 = Color.gray;
               else
                   obj15_3.color15_3 = Color.green;
               obj15_3.n15_3;
               obj15_3.repaint();
               try{
                   sleep(500);
               }catch  (InterruptedException ie)
               (       )
           }
       }
   }
   ex15_3.html
   <HTML>
    <HEAD>
      <TITLE>ex15_3</TITLE>
    </HEAD>
    <BODY>
   <applet  code="ex15_3.class" width=800 height=400>
   </applet>
             </BODY>
            </HTML>

选项

答案String.valueOf(n15_3) i<101或者i<=100 obj15_3.setInt(i)

解析 本题主要考查线程的概念和使用, Applet的执行过程和窗口,for循环语句,以及字符串和int型的数据转换,及面向对象编程的基本思想。解题关键是熟练地将Applet的执行和线程的基本思想结合完成一定的综合性的应用;熟练掌握线程的建立、运行以及线程类与封装类之间的信息传递方式,即通过对象调用封装的方法来进行,如语句obi15_3.repaint()。本题中,第1处,不可以直接填入n15_3,会导致参数类型不符合的错误,应该用String类的 valueOf()方法对int型数据进行转换得到String类型数据:第2处,注意题目要求,需要包括3和100,因此循环变量的上界应该是i<101或者 i≤100;第3处,由于n15_3是类ex15_3的私有成员变量,因此不可以直接用对象obj15_3来调用这个成员变量,需要通过类ex15_3的方法setInt()来实现对私有成员的修改。
转载请注明原文地址:https://kaotiyun.com/show/6mnp777K
0

最新回复(0)