首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

发现一个奇怪的JAVA程序,请帮忙见见

2013-04-02 
发现一个奇怪的JAVA程序,请帮忙看看//虽然我会用JAVA,但是底层的东西仍然是菜鸟。见笑了我写了一个测试term

发现一个奇怪的JAVA程序,请帮忙看看
//虽然我会用JAVA,但是底层的东西仍然是菜鸟。见笑了
我写了一个测试terminalIO的class代码如下:

package cn.cairuzhang.test;

import java.io.IOException;

public class terminalIO {
      public static void main(String[] args)throws IOException{
      int i;
      while((i = System.in.read())!= -1){
      i = Character.toLowerCase((char)i);
      System.out.write(i);
      }
      }
      }


上面的运行是正确的。但是当我加入下面的语句
package cn.cairuzhang.test;

import java.io.IOException;

public class terminalIO {
      public static void main(String[] args)throws IOException{
      int i;
      while((i = System.in.read())!= -1){
      i = Character.toLowerCase((char)i);
      System.out.write(i);
      System.out.write(i);
      }
      }
      }


结果就出现了一点奇特的地方::
U
uu


I
ii


//每次输出都带两个空行?!
然后我继续修改代码如下:
package cn.cairuzhang.test;

import java.io.IOException;

public class terminalIO {
      public static void main(String[] args)throws IOException{
      int i;
      while((i = System.in.read())!= -1){
      i = Character.toLowerCase((char)i);
      System.out.write(i);
      System.out.print("test");
      }
      }
      }


结果shi:
MAYBE
mtestatestytestbtestetest
test
test
//依然多出两行,不过即使是print而不是println,仍然会过行……
我有点疑惑其中的原因,所以发帖问问大家。不过也许是非常浅显的知识,我是菜鸟,请见谅、谢谢啦 java
[解决办法]
System.out.write是字节流,System.out.println一个是字符流
http://blog.sina.com.cn/s/blog_6abf2a620100sfqd.html
[解决办法]
首先你这个程序无法正常结束,read停止输入是当输入为-1,这个如何才能满足?
执行时,按回车键导致输出(直到出现换行符时,才将打印缓冲中的内容打印出来),而回车键是2个字符:回车、换行
所以,两个write,就出现2个空行,因为输出了2个换行符

热点排行
Bad Request.