import java.io.*;public class IOUse 
{
public static void main(String[] args)
{
int b;
int count=0;
try
{
//标准输入读入数据
while((b=System.in.read())!=-1)
{
count++;
System.out.print((char)b);
}
}
catch(IOException e)
{
System.out.println(e);
}


System.out.println();
//向标准输出打印数据
System.out.println("counted "+count+" total bytes.");
}
}
为什么数据打印不出啊,奇怪的事,谢谢帮忙~~~~~~~~~~~

解决方案 »

  1.   

    我用JCreator就打印出来了啊
    你的工具的问题吧
      

  2.   

    你没有写Scanner  输入B的值  怎么判断B(b=System.in.read())!=-1
      

  3.   

    System.in.read()编码方式和你想的不一致,如果是-1的话,就应该用45这个值做比较
    它采用的是ASCALL码
      

  4.   

    read()
    从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。 
    因此
    while((b=System.in.read())!=-1)
    {
    count++;
    System.out.print((char)b);

    在输入B的值后,回车, 才能进入while方法体中
      

  5.   

    因为不管你输入什么 System.in.read()) 都不会等于 -1,所以总是在 while 循环里。试试:
    while((b=System.in.read())!='q')
      

  6.   

    你的while((b=System.in.read())!=-1)语句构成的是死循环,程序无法结束,当然打印不出结果
    注意: System.in.read接收的是字节0-255返回的是ASCII码
      

  7.   

    从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。
    你这while里面一直阻塞,所以不会输出后面的count值 
      

  8.   

    没有任何输入,程序就一直等待着传入的字符,如果在命令行里边输入exit,程序会直接退出,但是也不会打印count的值
      

  9.   

    陷入while((b=System.in.read())!=-1) 

    count++; 
    System.out.print((char)b); 

    的死循环了!
    System.in.read()是在键盘上读取一个字节,你一直敲键盘,它就永远在里面循环,你可以设置一个条件,如while((b=System.in.read())!= 'a'),只要敲a,就跳出循环了
    还有,用你这种统计敲入字节次数的方法不好,因为敲一次回车算2个字节,也就是说,如果你先敲s,再敲a(按我前面的方法跳出循环),它所统计的count次数是s(1字节)+回车(2字节)+a(0字节,因为在while((b=System.in.read())!= 'a')判断中已不成立,跳出了循环)
    干脆土点,count结果直接减1就是统计结果!