美文网首页
疯狂java讲义第四章作业的一些小问题

疯狂java讲义第四章作业的一些小问题

作者: 娄童 | 来源:发表于2016-09-25 10:23 被阅读84次

    第二题 循环输出等腰三角形

    public class Tower {
        public void draw(int len)
        {
            //先画每一行
            for(int i=0;i<len;i++)
            {
                //空格
                for(int k=0;k<len-i-1;k++)
                {
                    System.out.print(" ");
                }
                //星号
                for(int j=0;j<2*i+1;j++)
                {
                    System.out.print("*");
                }
                //换行
                System.out.print('\n');
                
            }
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Tower tow=new Tower();
            tow.draw(9);
        }
    }
    

    第四题 按字节截取字符串

    我自己写的代码如下,代码的问题是不满足题设的汉字要求为两个字符

    public class SubStr {
        
        //private String[] str;
        private String result;
        public String DoSubStr(String str,int i,int len)
        {
            result="";
            //用charAt每次返回一个char字节存在String里面
            //从i 开始,截取长度为len
            for(int k=0;k<len;k++)
            {
                
                char temp=str.charAt(i);
                result+=temp;
                i++;
            }
            return result;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            SubStr subStr1=new SubStr();
            String result=subStr1.DoSubStr("A锅ASJJA", 1, 2);
            System.out.println(result);
        }
    }
    

    因此去网络上查找别的人的代码,发现一个可以将汉字找出来的办法。
    用到的方法有
    string.valueOf();这个可以吧obj转换成string类型
    在“GBK”中汉字编码为2个字节 可以和英文进行区分
    string.valueOf(c).getBytes("GBK").length
    因此,修改之后的代码

    import java.io.UnsupportedEncodingException; 
    public class SubStr {
        
        //private String[] str;
        private String result;
        public String DoSubStr(String str,int i,int len)
        throws UnsupportedEncodingException
        {
            /*if(str!=null&&!"".equals(str))
            {
                str = new String(str.getBytes(),"GBK");
                
            }
            */
            result="";
            //用charAt每次返回一个char字节存在String里面
            //从i 开始,截取长度为len
            for(int k=0;k<len;k++)
            {
                
                char temp=str.charAt(i);
                if(SubStr.isChineseChar(temp))
                {
                    result+=temp;
                    i=i+1;
                    len=len-1;
                    
                }else 
                {
                    result+=temp;
                    i++;
                }
                
            }
            return result;
        }
        //增加判断是否是汉字的方法
        public static boolean isChineseChar(char c)
        throws UnsupportedEncodingException
        {
            return String.valueOf(c).getBytes("GBK").length>1;
            
        }
    
        public static void main(String[] args) throws UnsupportedEncodingException {
            // TODO Auto-generated method stub
            SubStr subStr1=new SubStr();
            String result=subStr1.DoSubStr("我ZWR爱JAVA", 0, 6);
            System.out.println(result);
        }
    }
    

    p.s 昨天我的电脑放在教室里被一个小偷偷走了。so....第六题的代码随着电脑一起丢了(我昨天敲了一下去才敲出来的结果... 伤痛欲绝).....so我要接着往下学第五章啦~~~

    相关文章

      网友评论

          本文标题:疯狂java讲义第四章作业的一些小问题

          本文链接:https://www.haomeiwen.com/subject/kuhfyttx.html