A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘忠德 黑马帝   /  2011-12-29 21:08  /  1688 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘忠德 于 2012-1-1 16:04 编辑

以下代码:编译、运行输入“a”(不含引号),按回车后,系统输出什么?
        public static void main(String[] args) throws Exception{
                int[] x = {1,2,3,4,5,6};
                for(int y:x){
                        System.in.read();
                        System.out.println(y);
                }
先输出123, 再输入a+回车 输出456,求解~
        }

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

5 个回复

倒序浏览
read()为阻塞是方法,得等你输入才输出,为什么是这样输出就不太明白了,试了一下这个class  TT{
   public static void main(String[] args) throws Exception{
                 int[] x = {1,2,3,4,5,6};
               
                 for(int y=0,i=1;i<x.length;y=x[i],i++){
                         System.in.read();
                                                 System.out.println("java");
                         System.out.println(y);
                }

         }
}
也好奇怪结果,第一个y竟然是0;晕 ,求解。
回复 使用道具 举报
额 是哦 ,第一个就是0,{:soso_e113:}
回复 使用道具 举报
杨旭 黑马帝 2011-12-29 21:56:11
板凳
本帖最后由 杨旭 于 2011-12-29 21:57 编辑

大致研究了一下,下面是我个人理解  不一定正确 欢迎拍砖
System.in.read();这个方法一次只能接收一个输入的字符
当你什么都不输入 直接按回车时  会两个 两个的出来 也就是 12  34  56  (这里我就不换行了)
对于这个的理解只能是  windows的回车键占用了两个字符  也就是 \r 和 \n
当你随便输入一个非汉字的字符时  会三个三个的打印  也就是  123  456
当输入一个汉字时  一个汉字代表两个字符  会四个四个打印  1234  56

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
read是按字节就行读的吧,读一个字节就打印一次,字符+回车应该是3个字节,所以打印3次

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
谢谢哦,明白了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马