黑马程序员技术交流社区

标题: 黑马入学测试题 [打印本页]

作者: 刘宣超    时间: 2014-9-15 21:34
标题: 黑马入学测试题
今天做了几个黑马入学测试题这个写了半天又点小费劲,自己总结了下。

10、编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表).
* 例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,截取3个字节也要是"HM"而不要出现半个中文

这个自己写的这个 还是比较容易理解吧,在网上看了些程序都比较复杂。

public class Test10 {
       
        public static void bytesubString(String str,int len){
               
                byte[] by = null;//初始化数组 赋值null;
                if(str!=null){//要截取的字符串不能为null
                        try {
                                by = str.getBytes("GBK");//把字符串转换成字节数组,编码。
                        } catch (UnsupportedEncodingException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                else{
                        System.out.println("输入的值为null");
                        return;//如果为空就结束、
                }
                if(by.length<len){//如果len大于 字节数组的长度那么就无法截取了,
                        System.out.println("您输入的字符串长度错误。");
                        return;
                }
                String newstr = new String(by,0,len);//获取要截取的字符串
               
                if(!(newstr == str.substring(0, len))){//判断从源字符串上截取新字符串的位置上的那个字符串和这个新字符串是否相等
                        //如果不相等说明新字符串截取到了半个汉子,
                        //我们再判断这心字符串的长度是否小于2,如果小于2那么代表只有一个字节,而且那个自己还是半个汉子,所以把他的值改为null
                        if(newstr.length()<2){
                                newstr = null;
                        }
                       
                        else{
                                //否则我们把这个字符串的指针向左移动一个 减一个字节,就获得了这个新的字符串了
                                newstr = newstr.substring(0,len-1);
                        }
                }
                System.out.println(newstr);
                //打印这个新的字符串
        }
        public static void main(String[] args) {
               
                bytesubString("HM黑马", 4);
        }

}

作者: wy363681759    时间: 2014-9-16 15:56
入学测试好难
作者: 笑脸迷人    时间: 2014-9-16 16:43
不错!:lol
作者: 行进中的蜗牛    时间: 2014-9-16 17:51
很好............
作者: 范鹏霄    时间: 2014-9-16 18:02
             挺好
作者: JTANISME    时间: 2014-9-16 18:42
这要判断ASC编码范围
作者: zhxu188    时间: 2014-9-17 01:04
这个程序有点小问题,将这句 if(!(newstr == str.substring(0, len)))代码,改成if(!(str.contains(newStr)))就完美了
亲测,第一种确实有问题,第二种才是完美的
作者: 纷飞尽    时间: 2014-9-21 14:48
其实刚开始接触陌生的题都觉得很难,接触多久好了。把思路打开了
作者: 石头-剪刀    时间: 2014-9-21 15:04
看到有人说入学测试难,我心里面就舒服多了
作者: however_    时间: 2014-9-21 15:21
你的比我的还难啊
作者: limengpiao    时间: 2014-9-21 15:41
入学测试好难得说




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2