大家好,不管谁看了我的博客,首先请大家原宥我的自大和我的拙见。首先先来解析一下我做的选做题,然后再谈一谈我学习java的感受。

选做题的题目是:编写一个应用程序,生成并打印输出一个XXX-XXX-XXXX类型的电话号码,包括连接线。前三个数字中不能有89,中间三个数字组成的数不能大于742.我第一次编写的源程序是这样的(其中附带有解释)

但第一次编写的源程序中有缺陷。比如说num4虽然符合题目要求是三100取到742,而0-99之间的数如012,001这样的数就取不到。同样num5也有此缺陷。还有就是为了简便化,我们可以再定义一个String型变量num, System.out.println("The telephone number is:"+num1+num2+num3+"-"+num4+"-"+num5);替换为num=””+num1+num2+num3+’”-+num4+-+num5; System.out.println("The telephone number is:"+num);所以后来又参照卢红威的源程序,对我的程序又进行改进。改进后的源程序如下。

  1. import java.util.Random;   /*import的申明告诉编译器应该在哪里寻找相关类,避免了每次都写出类的全名*/ 
  2. public class Tel   /*定义Tel这个类*/ 
  3. {    
  4.    public static void main(String[] args)  
  5.    {  
  6.        Random generator=new Random();   /*对generator对象引用变量进行申明,并用Random();构造方法进行对象的初始化*/ 
  7.  
  8.        int num1,num2,num3,num4,num5;  /*对变量进行申明*/ 
  9.  
  10.        num1=generator.nextInt(8);    /*用“generator”对象调用Random类中的nextInt();方法对变量num1进行赋值,生成一个0-7范围中的随机数*/ 
  11.  
  12.        num2=generator.nextInt(8);    /*同上*/ 
  13.  
  14.        num3=generator.nextInt(8);    /*同上*/ 
  15.  
  16.        num4=generator.nextInt(643)+100;   /*用“generator”对象调用Random类中的nextInt();方法对变量num4进行赋值,生成一个100-642范围中的随机数*/ 
  17.  
  18.        num5=generator.nextInt(9000)+1000;   /*同上*/    
  19.  
  20.        System.out.println("The telephone number is:"+num1+num2+num3+"-"+num4+"-"+num5);    /*用字符串拼接输出这个电话号码*/ 
  21.  
  22.    }  

位数字,但它的范围只能从

  1. /*import的申明告诉编译器应该在哪里寻找相关类,避免了每次都写出类的全名*/  
  2. import java.util.Random;  
  3. /*定义Tel2这个类*/    
  4. public class Tel2     
  5. {    
  6.    public static void main(String[] args)  
  7.    {  
  8.        /*用new运算符创建对象,并用Random();构造方法进行对象的初始化*/  
  9.        Random generator=new Random();  
  10.        /*申明5个int类型的基本变量,num1、num2、num3分别代表电话号码的前三位数字,numb是为生成电话号码的中间三位数字而生成的0-742的随机数,numc是为生成电话号码的最后四位数字而生成的0-9999的随机数*/    
  11.        int num1,num2,num3,numb,numc;  
  12.        /*申明3个String类型的变量,numa是电话号码的前三位数,numb1是电话号码的中间三位数,numc1是电话号码的最后四位数*/    
  13.        String numa,numb1,numc1;   
  14.        /*用“generator”对象调用Random类中的nextInt();方法对变 量num1进行赋值,生成一个0-7范围中的随机数*/     
  15.        num1=generator.nextInt(8);    
  16.        num2=generator.nextInt(8);     
  17.        num3=generator.nextInt(8);  
  18.        /*用num1、num2、num3以字符串的形式组成numa来表示电话号码的前三位数字*/     
  19.        numa=""+num1+num2+num3;     
  20.        System.out.println("The first number is:"+numa);  
  21.        /*用“generator”对象调用Random类中的nextInt();方法对变量numb进行赋值,生成一个0-742范围中的随机数*/  
  22.        numb=generator.nextInt(743);    
  23.        /*此if语句限定随机数是三位数字的话就输出*/  
  24.        if(numb>=100)      
  25.        {  
  26.          numb1=""+numb;  
  27.          System.out.println("The second number is:"+numb1);  
  28.        }  
  29.        /*用else语句限定如果随机数是一位则在其前补两个00,是三位则在其前补一个0,使它们构成电话号码的中间三位数字*/  
  30.        else  
  31.        {  
  32.           if(numb<10)  
  33.           {  
  34.             numb1="00"+numb;  
  35.             System.out.println("The second number is:"+numb1);  
  36.           }  
  37.           else  
  38.           {  
  39.             numb1="0"+numb;  
  40.             System.out.println("The second number is:"+numb1);  
  41.           }  
  42.        }  
  43.        /*以下生成的电话号码的后四位数字numc1和上面生成的numb1做法相同*/  
  44.        numc=generator.nextInt(10000);  
  45.        if(numc>=1000)  
  46.        {  
  47.          numc1=""+numc;  
  48.          System.out.println("The third number is:"+numc1);  
  49.        }  
  50.        else  
  51.        {  
  52.           if(numc<10)  
  53.           {  
  54.             numc1="000"+numc;  
  55.             System.out.println("The third number is:"+numc1);  
  56.           }  
  57.           else  
  58.           {  
  59.              if(numc<100)  
  60.              {  
  61.                numc1="00"+numc;  
  62.                System.out.println("The third number is:"+numc1);  
  63.              }  
  64.              else  
  65.          {  
  66.                numc1="0"+numc;  
  67.                System.out.println("The third numer is:"+numc1);  
  68.              }  
  69.           }  
  70.        }  
  71.    /*以字符串的形式打印输出这个电话号码*/   
  72.    System.out.println("The telephone number is:"+numa+"-"+numb1+"-"+numc1);    
  73.    }  

 

  第二次写的程序对取值范围的局限性和不简化性都进行了改进。也许还是不尽完美,希望老师和同学们能指出有缺陷的地方。

  现在来谈一谈我学习java的感受。我觉得学习java首先需要我们有耐心,就像我第二次做选做题一样,首先我要把自己写的源程序看一遍回想自己的做题思想、思路和老师给我指出的不足、缺陷。再者我还要把卢红威的源程序给看懂,找出他的解题思路。当然我自己写出来的源程序在编译、运行时也会出很多的错误,比如我为了使程序简化和一目了然,我加了这样的语句numa=""+num1+num2+num3;num=""+numa+"-"+numb+"-"+numc;但我忘记对其进行Sring numa,num;这样的申明了,导致无法编译。当然做的过程中还出现了其它很多的问题,所以就需要我们沉着心,耐着性子,我们才能把它做完。第二个是上课听讲要仔细,我觉得java就是要我们过细,很多时候老师在课堂上无意中讲的一句话也许就是一个重点,比如说用java运行字节码程序时不要后缀名.class,否则我们就无法运行;不是public的类,文件名和类名可以不一样。这些细节都是我们在课堂上听课需要注意的。编写程序的时候也是要求我们过细,这样我们才能编写出一个成功的程序,当然编写出一个成功程序的前提还是我们需要熟悉和掌握java的语法和规则,这就需要我们多看书。最后是我们要有一个越难的东西我们越要征服它的心态。我觉得java和英语差不多,不是说像高数那样难的我们都看不懂,只是它有点繁琐,像英语一样有很多的语法,规则需要我们去了解和记忆。比如说它有很多的包,报下面又有很多的类,类中又有很多的方法,这些只有当我们熟悉它,吃透它之后,用起来的时候我们才能驾轻就熟。我经常告诫自己,做什么事都不是一蹴而就的,是需要我们付出的,学习java更是要我们付出我们的耐心的。

    当然,我也是初涉java,这只是我目前的愚见。希望不对的地方还请大家指出来。