lz System.in.read()  读一个字节
当你输入1   其实是'1'  当给data的时候转为整型。 '1' --> 49
System.out.write(data);  是往控制台写数据。
而System.in.read就从里边读。

解决方案 »

  1.   

    "注释掉System.out.println(data);以后,如果输入1,它会在控制台打印出”1“",你都没有输出怎么可能在控制台打印出1呢!你的System.in.read()是从in这个输入流中读取数据,但是你从键盘输入的"1"是存放到args[]数组中,并没写到你的in流中,所以循环不能执行啊!
      

  2.   

    第一个问题,输入1回车,在windows下是得到了三个字节,也就是'1'的ASCII码、\r(ASCII码是13)、\n(ASCII码是10)。
    pringln的时候,是将整数转换成字符串表现形式写入标注输出流并换行。所以看到49,就是'1'的ASCII码。
    那个113是1和13。write的时候,是把整数转换为字节型并输出到标准输出流,因此输出的是'1'。后面的13换行和10换行也是同理。
    第二个不懂。
      

  3.   

    如果你想输出字符的话 int data;  改成 char型
    System.in.read() 类型转换一下 (char)System.in.read()
    至于你现在的程序里面写的内容
    由于
    .read() 读取的是全部输入流
    所以包括按下的换行键 换行包括一个换行符和一个什么字符(我给忘了)
    所以 
    如果你注释掉System.out.write(data);  这句话
    你输出的
    49
    13
    10 
    49是 字符“1”的ASCLL码
    13 是 enter
    10 是那个我记不清的字符……  System.out.write(data); 是输出字符而不是ascll码
    所以当你加入这句话的时候
    在13前面就会多出来一个“1”推荐你在两句话之间 插一句注释比如 System.out.println("-----");
    然后 运行程序在输入的时候输入 字母 而不是数字 会比较容易理解
      

  4.   

    问题一:
    行数   输出  解释
      1     1   -- 输入1,换行
      2     49  -- System.out.println(data); 1的ascii码49, 换行
      3     113 -- System.out.write(data); 输出1
                  System.out.println(data); read回车键, 输出回车键的ascii码13, 换行
      4         -- System.out.write(data); 输出回车键
      5     10  -- System.out.println(data); read换行键, 输出换行键的ascii码10, 换行
                -- System.out.write(data); 输出换行键
    问题二:
    你在代码后加个System.out.println("\n");试试
      

  5.   


    完全正确的,这段代码所有的操作都是ASCII的转换
    最后的那个要显示出来的话,需要加一句System.out.flush(); 因为你写的是流。