zoukankan      html  css  js  c++  java
  • 暑假写的有关字符串处理的程序

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

     

    public static void main(String[] args) throws UnsupportedEncodingException {
        Scanner in=new Scanner(System.in);
        System.out.println("input a String:");
        String str=in.next();Task2_1


        String c=CutString(str,6);
        System.out.println("output the String after cut:"+c);

    }
    private static String CutString(String string, int length) throws UnsupportedEncodingException {
      /*length为截取的字符串字节数*/
        byte[] Byte=string.getBytes("Unicode");
        int n=0;/*字节数*/
        int i=2;
        for(;i<Byte.length&&n<length;i++){
            if(i%2==1)
                n++;
            else
            if(Byte[i]!=0)
                n++;
        }
       if(i%2==1)
       {
           if(Byte[i-1]!=0)
               i--;
           else
               i++;
       }
       return new String(Byte,0,i,"Unicode");
    }

     

     

    Task2_2

    如果一串字符如"aaaabbc 中国1512"要分别统计英文字符的数量,中文字符的数量,和数字 字符的数量。

     

    public static void main(String[] args) {

        Scanner in=new Scanner(System.in);

        System.out.println("input a string including English,Chinese,Number and Others");
        String str=in.next();

        int chinumber=0;
        int engnumber=0;
        int number=0;
        int othernumber=0;

        for(int i=0;i<str.length();i++)
        {
            char getchar=str.charAt(i);
            if(getchar>='0'&&getchar<='9')
                number++;
            else if((getchar>='a'&&getchar<='z')||(getchar>='A'&&getchar<='Z'))
                engnumber++;
            else if(isChinese(getchar))
                chinumber++;
            else
                othernumber++;
        }
        System.out.println("English numbers are"+engnumber);
        System.out.println("Numbers are"+number);
        System.out.println("Chinese Numbers are:"+chinumber);
        System.out.println("Other Numbers are:"+othernumber);
    }

    private static boolean isChinese(char getchar) {
        Character.UnicodeBlock ub=Character.UnicodeBlock.of(getchar);
        if(ub==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS//CJK 统一表意符号
                ||ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS//CJK 兼容象形文字
                ||ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A//CJK 统一表意符号扩展 A
                ||ub==Character.UnicodeBlock.GENERAL_PUNCTUATION//常用标点
                ||ub==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION//符号和标点
                ||ub==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)//半角及全角形式
            return true;
        else
            return false;
    }

     

    1:要想统计其中的中文字符的个数就需要调用isChinese方法。

    2Java中的字符串不是数组,更像是指针,要想获得字符中第i个字符,需要调用(StringName).charAt(i)

     

    Task2_3

    创建一个接口,有方法一用于求图形面积,方法二用于求周长。其次创建一个图形类Circle实现以上述接口两个方法用于 求圆的面积和周长,并且设置一常量pi表示圆周率,提供一个无参的构造方法初始化圆的半径r为1,和一个有参的构造方法 用于初始化其半径r值,在main方法中创建对象的上转型对象,求出圆的周长和面积并打印输出。

     

    public static void main(String[] args){
            Object obj;
            obj=new circle(4);
            circle c=(circle)obj;
            System.out.println("Circle's area is " + c.getArea(c));
            System.out.println("Circle's perimeter is "+c.getPerimeter(c));
        }
    }
    /*circle*/
    class circle implements Count{
        private double r;
        private final double pi=3.14;
        /*构造函数*/
        public circle(){
            r=1;
        }
        public circle(double radius){
            r=radius;
        }
        /*将接口中的方法实例化*/
        public  double getArea(circle C) {
            return (C.pi)*(C.r)*(C.r);
        }
        public double getPerimeter(circle C) {
            return 2*(C.pi)*(C.r);
        }

    接口

    public interface Count {
        double getArea(circle C);
        double getPerimeter(circle C);
    }

    1idea中接口的创建和Ecilipase中不一样,无法new出来,idea中需要在packge中在创建一个class,在创建class的过程中会弹出选项让你选择interface

    2:上转型对象,假设B类从A类继承,当用B类创建对象b的引用赋值给A类对象a时,则称A类对象a是子类B对象b的上转型对象

    Eg:     A a;            or           A a;

           a=new B();                    B b=new B();

                                        A=b;

    注意:上转型对象不能调用子类中新创建的方法和实例域

  • 相关阅读:
    Windows 环境下配置 git bash 的 HOME 默认路径
    SQL Server 2008 r2 输入SQL语句不能自动提示的解决办法
    搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)
    【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
    使用 hexdump dump 文件内容
    调用 WebService 浏览器提示 500 (Internal Server Error) 的原因及解决办法
    PHP的文件格式应该以UTF-8无BOM编码
    继电器电路
    ROS零门槛教程系列(二)——Linux常用指令:mkdir、tar、 unzip、cp、scp、mv、rm、find、apt、ssh
    ROS零门槛教程系列(一)——ubuntu安装
  • 原文地址:https://www.cnblogs.com/Hdaydayup/p/6029607.html
Copyright © 2011-2022 走看看