工具类

.程序分析题

1、分析如下程序,指出哪些语句会出现错误:

    publicclass WrapperDemo {

    publicstaticvoid main(String[] args) {

        String a1="3";

        String a2="abc";

        String a3="10L";

        String a4="012";

       

        Integer x1=new Integer(a1); 

        Integer x2=new Integer(a2);

        Integer x3=new Integer(a3); 

        Integer x4=new Integer(a4);

        Long x5=new Long(a3);    

       

        String b1="3.14D";

        String b2="3.14F";

        String b3="3.14E2D";

        String b4="3.14E2F";

        String b5="abc";

       

        Float y1=new Float(b1);

        Float y2=new Float(b2);

        Float y3=new Float(b3);

        Float y4=new Float(b4);

        Float y5=new Float(b5);     

       

        Double z1=new Double(b1);

        Double z2=new Double(b2);

        Double z3=new Double(b3);

        Double z4=new Double(b4);

        Double z5=new Double(b5);  

       

        Boolean bn1 = new Boolean("true");

        Boolean bn2 = new Boolean("false");

        Boolean bn3 = new Boolean("aa");

       

    }

}

知识点:字符串转换为包装类、包装类转换为基本数据类型、字符串转换为基本数据类型

2、分析如下程序,并写出结果。

public class WrapperEquals{

    public static void main(String[] args) {

        Integer x=new Integer(10);

        Integer y=new Integer(10);

        System.out.println(x==y);

        System.out.println(x.equals(y));

    }

}

输出结果为:false   true

知识点:基本数据类型转换为包装类、自动装箱和自动拆箱

3分析如下程序,并写出结果。

         publicclass WrapperToString{

    publicstaticvoid main(String[] args){

        Integer x=new Integer(100);

        System.out.println(x);

        System.out.println(x.toString());

    }

}

结果为:100(基本数据类型)  100(字符串类型)

知识点:自动装箱和自动拆箱

4、分析如下程序是如何自动拆箱和装箱的。

    publicclass BoxingDemo{

    publicstaticvoid main(String[] args) {

        Integer x=10;//自动装箱

        Integer y=20;

      

        int z=x+y;//自动拆箱

      

        System.out.println(z);

    }

}

知识点:自动装箱和自动拆箱

Ⅱ.编程题

1、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。

知识点String中常用的方法

2、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名

如果邮箱地址不合法则显示不合法的原因

提示:邮箱地址不合法的因素:

1)      邮箱地址中不包含@或。

2)      邮箱地址中含有多了@或。

3)      邮箱地址中。出现在@的前面

4)      用户名里有其他字符

实现步骤:

(1) 创建一个类,类名:mailtest

类图如下:

(类名和方法名必须与要求一样。区分大小写)

知识点String中常用的方法

3、生成十个0~100之间的随机数,放到数组中,然后排序输出。

知识点Math类取整,获得随机数等

4、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。

知识点String中常用的方法

5、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

知识点String中常用的方法

.选做题

1.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,    但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,

输入“我ABCDEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。

知识点String中常用的方法

2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。


知识点String中常用的方法

 

3.有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。

知识点String中常用的方法

 

 答案:

.程序分析题

1、分析如下程序,指出哪些语句会出现错误:

   publicclass WrapperDemo {

    publicstaticvoid main(String[] args) {

        String a1="3";

        String a2="abc";

        String a3="10L";

        String a4="012";

       

        Integer x1=new Integer(a1); 

        Integer x2=new Integer(a2);     

        Integer x3=new Integer(a3);     

        Integer x4=new Integer(a4);

        Long x5=new Long(a3);            

       

        String b1="3.14D";

        String b2="3.14F";

        String b3="3.14E2D";

        String b4="3.14E2F";

        String b5="abc";

       

        Float y1=new Float(b1);

        Float y2=new Float(b2);

        Float y3=new Float(b3);

        Float y4=new Float(b4);

        Float y5=new Float(b5);              

       

        Double z1=new Double(b1);

        Double z2=new Double(b2);

        Double z3=new Double(b3);

        Double z4=new Double(b4);

        Double z5=new Double(b5);           

       

        Boolean bn1 = new Boolean("true");

        Boolean bn2 = new Boolean("false");

        Boolean bn3 = new Boolean("aa");

       

    }

}

 

 

2、分析如下程序,并写出结果。

public class WrapperEquals{

    public static void main(String[] args) {

        Integer x=new Integer(10);

        Integer y=new Integer(10);

        System.out.println(x==y);

        System.out.println(x.equals(y));

    }

}

False

true

 

3分析如下程序,并写出结果。

         publicclass WrapperToString{

    publicstaticvoid main(String[] args){

        Integer x=new Integer(100);

        System.out.println(x);

        System.out.println(x.toString());

    }

}

100

100

 

4、分析如下程序是如何自动拆箱和装箱的。

    publicclass BoxingDemo{

    publicstaticvoid main(String[] args) {

        Integer x=10;      装箱

        Integer y=20;      装箱

      

        int z=x+y;         拆箱

      

        System.out.println(z);

    }

}

 

Ⅱ.编程题

1、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。

publicclass Test {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       Scanner in = new Scanner(System.in);

       String s = in.next();

       int num = 0;

       for(int  i =0;i < s.length();i++){

           if(s.charAt(i)=='e'){

              num++;

           }

       }

       System.out.println(num);

    }

 

}

 

2、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名

如果邮箱地址不合法则显示不合法的原因

提示:邮箱地址不合法的因素:

1)      邮箱地址中不包含@或。

2)      邮箱地址中含有多了@或。

3)      邮箱地址中。出现在@的前面

4)      用户名里有其他字符

实现步骤:

(1) 创建一个类,类名:mailtest

类图如下:

(类名和方法名必须与要求一样。区分大小写)

publicclass Mailtest {

    publicstaticboolean testMail(){

       Scanner in = new Scanner(System.in);

       String s = in.next();

       if(s.indexOf("@")==-1||s.indexOf(".")==-1){

          

           System.out.println("邮箱地址中不包含@.");

           returnfalse;

       }

      

       if(s.indexOf("@")!=s.lastIndexOf("@")||s.indexOf(".")!=s.lastIndexOf(".")){

           System.out.println("邮箱地址中含有多了@.");

           return  false;

       }

      

       if(s.indexOf("@")>s.lastIndexOf(".")){

           System.out.println("邮箱地址中.出现在@的前面");

           returnfalse;

       }

       for(int i=0;i<s.indexOf("@");i++){

           if( (s.charAt(i)>='a'&&s.charAt(i)<='z')||(s.charAt(i)>='A'&&s.charAt(i)<='Z') ){

             

           }else{

              System.out.println("用户名里有其他字符");

              returnfalse;

           }

          

       }

       returntrue;

    }

}

 

publicclass Test {

 

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

      

       if(Mailtest.testMail()){

           System.out.println("邮箱格式合法");

       }else{

           System.out.println("邮箱格式不合法");

       }

    }

 

}

3、生成十个0~100之间的随机数,放到数组中,然后排序输出。

publicclass Test {

    publicstaticvoid num(){

      

       int[] a = newint[8];

       for(int i = 0;i<a.length;i++){

           a[i] = (int)(Math.random()*101);

       }

       Arrays.sort(a);

       for(int i = 0;i<a.length;i++){

           System.out.println(a[i]);

       }

      

    }

    publicstaticvoid main(String[] args) {

       num();

    }

}

 

 

4、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。

publicclass Test {

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

       Scanner in = new Scanner(System.in);

       String s = in.next();

       String a = in.next();

      

       int num = 0;//i是循環的次數

      

       for(int i = 0;i<s.length()-a.length();i=s.indexOf(a, i)+1){

           if(s.indexOf(a, i)!=-1){

              num++;

           }

       }

       System.out.println(num);

    }

}

 

5、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

publicclass Test {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

       Scanner in = new Scanner(System.in);

       String s = in.next();

       int num=0,eng=0,china=0;

       for(int i =0;i<s.length();i++){

           if(s.charAt(i)>='0'&&s.charAt(i)<='9'){

              num++;

           }elseif((s.charAt(i)>='a'&&s.charAt(i)<='z')||(s.charAt(i)>='A'&&s.charAt(i)<='Z')){

              eng++;

           }elseif((19968 <= s.charAt(i) && s.charAt(i) <40623)) {

              china++;

           }

 

       }

      

       System.out.println("数字是:"+num);

       System.out.println("英文是:"+eng);

       System.out.println("中文是:"+china);

    }

 

}

 

.选做题

1.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,    但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,

输入“我ABCDEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。

publicstaticboolean isLetter(char c){

    int k=0X80;

    return c/k==0?true:false;  

   

    }

   

    publicstaticint lengths(String strSrc){

    if (strSrc==null){

       return 0;

    }

    int len=0;

    char[] strChar=strSrc.toCharArray();

    for (int i=0;i<strChar.length;i++){

       len++;

       if (!isLetter(strChar[i])) len++;     

    }

    return len;   

    }

   

    publicstatic String subString(String origin,int len){

    if (origin==null || origin.equals("")|| len<1){

       return"";

    }

    if (len>lengths(origin)){

       return origin;     

    }

    byte[] strByte=newbyte[len];

    System.arraycopy(origin.getBytes(),0,strByte,0,len);

    int count=0;

    for (int i=0;i<len;i++){

       int value=(int)strByte[i];

       if (value<0) count++;  

    }

    if (count % 2 !=0){

       len=(len==1)?++len:--len;

    }

    returnnew String(strByte,0,len);

   

    }  

 

publicstaticvoid main(String[] args) {

            System.out.println(""+ subString("ABCDEF",6));

  

}

 

 

另一种

 

 

publicclass Stringss {

 

publicstaticvoid main(String[] args) throws Exception{

      

       String a = "ABCDEF" ;

       int len = 6 ;

       String encoding = "UTF-8" ;

      

       System.out.println( getSubString(a, len,encoding) );

       a = "ABC";

       len = 4 ;

       encoding = "gbk" ;

       System.out.println( getSubString(a, len,encoding) );

    }

   

    /**

     *

     *@paramstr传入字符串

     *@paramlen截取字节数

     *@paramencoding编码方式

     *@return返回截取后的字符串

     *@throwsException

     */

    publicstatic String getSubString(String str,int len,String encoding) throws Exception{

       if(str == null || str.length()<1) returnnull ;

       if(len<1) returnnull ;

       StringBuffer sb = new StringBuffer();

       int all = 0 ;

       for(int i=0;i<str.length();i++){

           String tmp = str.substring(i,i+1);

           sb.append(tmp);

           byte[] tmpB = tmp.getBytes(encoding);

           all +=tmpB.length ;

           if(all>=len){

              break ;

           }

       }

       return sb.toString() ;

    }

 

}

2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

publicclass Test {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

       Scanner in = new Scanner(System.in);

       int a = in.nextInt();

       String s ="",n="";

       int wei =1;

       boolean ling = false;//判断是否是零

       boolean da0=true;//判断是否打出字(连零)

       boolean da = true;//判断是否打出字

       boolean z = true;

       while(a>0){

           //判断是否是10000

           if(a/10>0){

              if(a%10!=0){

                  z = false;

              }

             

           }

           n="";

           da0=true;

           da = true;

           if(a%10==0){

              da = false;

              if(ling){

                  da0=false;

              }

              ling=true;

           }else{

              ling=false;

           }

          

           if(da0){

              n=foo1(a%10);

           }

          

           if(da){

              n+=foo2(wei);

           }

          

           s = n+s;

           a=a/10;

           wei++;

       }

      

       if(z){

           s=s.substring(0, s.length()-1);

       }

       System.out.println(""+s);

    }

   

    publicstatic String foo1(int i){

       String s = null;

       switch(i){

       case 0:s="";

       break;

       case 1:s="";

       break;

       case 2:s="";

       break;

       case 3:s="";

       break;

       case 4:s="";

       break;

       case 5:s="";

       break;

       case 6:s="";

       break;

       case 7:s="";

       break;

       case 8:s="";

       break;

       case 9:s="";

       break;

       }

       return s;

    }

    publicstatic String foo2(int i){

       String s ="";

       switch(i){

       case 1:

       break;

       case 2:s="";

       break;

       case 3:s="";

       break;

       case 4:s="";

       break;

       case 5:s="";

       break;

       case 6:s="十万";

       break;

       case 7:s="百万";

       break;

       case 8:s="千万";

       break;

       case 9:s="亿";

       break;

       }

       return s;

    }

   

 

}

 

3.有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。

publicclass Test {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

       if(foo()){

           System.out.println("是回数");

       }else{

           System.out.println("不是回数");

       }

    }

   

    publicstaticboolean foo(){

       Scanner in = new Scanner(System.in);

       String s = in.next();

       int j = s.length()-1;

       for(int i=0;i<s.length()/2;i++){

          

           if(s.charAt(i)!=s.charAt(j)){

             

              returnfalse;

           }

           j--;

       }

      

       returntrue;

    }

}

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值