是这样一个题面,给你一个字符串比如:“101我爱你”要求写个调用此方法charStr("101我爱你",b),b为变量,b=1时输出3,b=3时输出101,b=4时输出101,b=5时输出101我。就这个意思!请高手给出解法,谢谢!

解决方案 »

  1.   

    是这样一个题面,给你一个字符串比如:“101我爱你”要求调用此方法charStr("101我爱你",b),b为变量,b=1时输出"1",b=3时输出"101",b=4时输出"101",b=5时输出"101我"。就这个意思!请高手给出解法,谢谢!
      

  2.   

    MS没什么规律可言,直接用switch case??
      

  3.   

    -_-!   package lihan;public class test {
    public void charStr(String b)
    {
    if(b.equals("1"))
    {
    System.out.println("3");
    }
    if(b.equals("3"))
    {
    System.out.println("101");
    }
    if(b.equals("4"))
    {
    System.out.println("101");
    }
    if(b.equals("5"))
    {
    System.out.println("我");
    }
    } /**
     * @param args
     */
    public static void main(String[] args) {
    test t=new test();
    t.charStr("1");
    // TODO Auto-generated method stub }}
    可能我写得不是你要的
      

  4.   

    就是要把“101我爱你”中的数字作为占1个字节输入,我输入charStr("101我爱你",1),程序要输出显示“1”
    而中文要以正常的占2个字节输入,我输入charStr("101我爱你",5),程序要输出显示“101我”,
    我输入charStr("101我爱你",6),程序还要输出显示“101我”。
      

  5.   

    要通用一点的charStr(String str,int b).
      

  6.   

    楼主忘记了一件事情吧.
    java使用Unicode编码,一个字符都是2个字节.
    String对象里一个字符的位置肯定是占用2字节的喵~~``
      

  7.   

    class Test{
      public static String charStr(String str,b){}
      public static void main(String[] args){
        System.out.println(new Test().charStr("101我爱你",1)//输出:1
        System.out.println(new Test().charStr("101我爱你",2)//输出:10
        System.out.println(new Test().charStr("101我爱你",3)//输出:101
        System.out.println(new Test().charStr("101我爱你",4)//输出:101
        System.out.println(new Test().charStr("101我爱你",5)//输出:101我
         System.out.println(new Test().charStr("101我爱你",6)//输出:101我
         System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱
      }
    }
    这个意思,能看明白了吧!
      

  8.   

    class Test{ 
      public static String charStr(String str,int b){} 
      public static void main(String[] args){ 
        System.out.println(new Test().charStr("101我爱你",1)//输出:1 
        System.out.println(new Test().charStr("101我爱你",2)//输出:10 
        System.out.println(new Test().charStr("101我爱你",3)//输出:101 
        System.out.println(new Test().charStr("101我爱你",4)//输出:101 
        System.out.println(new Test().charStr("101我爱你",5)//输出:101我 
        System.out.println(new Test().charStr("101我爱你",6)//输出:101我 
        System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱 
      } 

    这个意思,能看明白了吧!
      

  9.   

    package com.belstar.dbmodel;public class Test { public String splitIt(String str,int byteNum) {
     
        byte bt[] = str.getBytes();
     
        /*测试语句
         System.out.println("Length of this String ===>" + bt.length);
         for(int i = 0 ; i<bt.length;i++){
          System.out.print(" "+bt[i]);
        }
        System.out.println("");*/
     
        if(bt.length<=byteNum){//如果截取长度大于字段长度,那么不需截取,取全部即可
          byteNum = -1;
        }
     
        if (byteNum > 1) {
          if (bt[byteNum] < 0) {
            int i=0;
            for(i=byteNum;i>=0&&bt[i]<0;i--);//取得非中午字符的位置
            i = byteNum-i;
            if(i%2==0){
              str = new String(bt, 0, --byteNum);
            }else{
              str = new String(bt, 0, byteNum);
            }
            //System.out.println(str);
          }
          else {
            str = new String(bt, 0, byteNum);
            //System.out.println(str);
          }
     
        }
        else {
          if (byteNum == 1) {
            //截取单个字符,如果第一个字符是中文字符,那么就截取两个字节。即一个中文字,否则只截取一个字节
            if (bt[byteNum] < 0) {
              str = new String(bt, 0, ++byteNum);
            }
            else {
              str = new String(bt, 0, byteNum);
            }
          }
          else {
            //需要截取的长度是负数,返回原字符串
          }
        }
     
       
        
     
        return str;
      } public static void main(String[] args) {
    Test aaa=new Test();
    String bbb= aaa.splitIt("101我爱你", 5);
    System.out.println(bbb);
    }
    }
      

  10.   

    class Test{ 
      public static String charStr(String str,int b){} 
      public static void main(String[] args){ 
        System.out.println(new Test().charStr("101我爱你",1)//输出:1 
        System.out.println(new Test().charStr("101我爱你",2)//输出:10 
        System.out.println(new Test().charStr("101我爱你",3)//输出:101 
        System.out.println(new Test().charStr("101我爱你",4)//输出:101 
        System.out.println(new Test().charStr("101我爱你",5)//输出:101我 
        System.out.println(new Test().charStr("101我爱你",6)//输出:101我 
        System.out.println(new Test().charStr("101我爱你",7)//输出:101我爱 
      } 

    //希望高手能帮助完成public static String charStr(String str,int b){} 作用域内的代码。谢谢!
      

  11.   

    楼主没看我12楼的回复么,
    java使用unicode编码,字母、符号和汉字占用空间一样大,都是2个字节的.如果非要那样特殊处理,那么用汉字unicode编码区间去过滤一次.
      

  12.   

    好了谢谢大家啊,jyq0105的代码可以解决,我怎么结贴给你分呢!
      

  13.   


    试了下 好像String做不到放不到byte里  楼主哥你这题是不是C/C++的题啊? 要不就像6楼哥那样写死把  谁让java用的地Unicode码呢   要不在等等看有世外高人没~~
      

  14.   

    抓墙的哥哥“jyq0105的代码可以解决”,你不防也试试,就不会抓墙了!