黑马程序员技术交流社区

标题: 键盘输入字符截取 [打印本页]

作者: 勾尧    时间: 2012-12-27 16:08
标题: 键盘输入字符截取
本帖最后由 勾尧 于 2012-12-28 16:17 编辑

基础测试,键盘输入字符截取,例输入“我是中国人”,4的话,结果为人,即汉字是一个字符,这不就和字母一样了么,但一个汉字不是相当于两个字母么,求助一下

public static void main(String[] args) {              
          String oldstr ;               
          int count  ;                                       
          //键盘输入                       
         BufferedReader bufr =                              
                            new BufferedReader(new InputStreamReader(System.in));               
         try{                       
                    String line = bufr.readLine();                     
                     //将输入存到数组中                     
                     String [] arr = line.split(",");                  
                    //用两个变量记录,字符串和数字            
                     oldstr = arr[0];                     
                     count = Integer.parseInt(arr[1]);                                         
                     //按照输入数字截取字符串                     
                     String newstr = oldstr.substring(count);                     
                     System.out.println(newstr);            
         }catch(IOException e){                     
                         System.out.println("输入异常");               
}      
  }


作者: 勾尧    时间: 2012-12-27 22:11
求助一下,是我的想法有问题,还是我对IO的理解不对,想了好久了
作者: 冯伟超    时间: 2012-12-27 22:37
你的想法没问题,理解是正确的,电脑本身的默认编码是gbk,如果你将你读取的内容是按gbk读取内容的话,
那么你将你读取的内容在按照utf—8写出去,你就会看出很明显的效果。
  也正是这样才会有字符流和字节流的区别,测试的话你可以使用转换流,你可以试试
作者: 冯伟超    时间: 2012-12-27 22:37
你的想法没问题,理解是正确的,电脑本身的默认编码是gbk,如果你将你读取的内容是按gbk读取内容的话,
那么你将你读取的内容在按照utf—8写出去,你就会看出很明显的效果。
  也正是这样才会有字符流和字节流的区别,测试的话你可以使用转换流,你可以试试
作者: 罗海清    时间: 2012-12-27 22:37
看不懂要求
作者: 勾尧    时间: 2012-12-27 23:08
冯伟超 发表于 2012-12-27 22:37
你的想法没问题,理解是正确的,电脑本身的默认编码是gbk,如果你将你读取的内容是按gbk读取内容的话,
那 ...

好,我再看一下IO去,谢谢
作者: 勾尧    时间: 2012-12-27 23:11
罗海清 发表于 2012-12-27 22:37
看不懂要求

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

我的情况是,("abc",2),结果c没问题,但是输入(“我是谁”,2),结果是(谁),按题目来讲,结果应该是“是谁”,大致是这样
作者: 郭俊    时间: 2012-12-27 23:31
你这是转换流的编码问题               
            A:字符流 = 字节流 + 编码表
        B:流如果想改变其编码,就要使用转换流。
     用转换流里面有构造方法可以指定编码。
作者: 罗海清    时间: 2012-12-28 09:49
我不懂咋么做
作者: 王少雷    时间: 2012-12-28 11:43
如1楼所示 试试~




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