public class CharDecode { public static void main(String[] args) throws Exception 
{ System.out.println("please enter a chinese word:"); 
  int ch = 0; 
  while(true) 
  {    ch = System.in.read(); 
   System.out.println(ch);
   System.out.println("从这儿"+Integer.toHexString(ch)+"到这儿"); 
   break;
  } 
 }
}
这个读取键盘的输入的数据,我直接按的enter键换行,ch输出的是13,换行是/n/r两个字节,怎么读取的是
13个字节??

解决方案 »

  1.   

    13是ASCII码,就是回车。换行是 10,你只读取了一次就break了,所以就没有 10  了。
      

  2.   

    读取键盘输入的数据中,read()是以字节读取,返回的是字节数,回车是\r是1个字节,怎么又转换成ASCII码?
      

  3.   

    来自百度知道:
    System.in返回的是InputStream指向命令行输入的字节流,它的read方法以字节流的方式来读取命令行的输入的数据。也就是说,输入的字符,以字节流的方式从命令行传递给变量a,因此此时a是一个整数(字节流以整数的方式来表示)。实际上这个整数是ascii码中对应十进制数(具体可查看ascii码对照表)。
    比如输入a,因为a在ascii码中对应的十进制数是97,所以输出的就是97
      

  4.   

    mport java.util.*;
    import java.io.*;
    public class OutputExa {
    public static void main(String[] args) 
    { int b;
      byte buffer[]=new byte[100];
      try
      { System.out.println("输入一行文本,并存入磁盘:");
    b=System.in.read(buffer);  
     System.out.println(b+"这儿");
     File f=new File("G://java code/jackxu/src","secret.txt");
     FileOutputStream wf=new FileOutputStream(f);
     
     wf.write(buffer);
      wf.close();
      }
      catch(IOException e)
     { System.out.println("Error"+e);
     
     }
    }}  这儿也是从键盘上读取数据,为什么这儿直接点回车键时输出的是2,而不是ASCII值??
      

  5.   


    这里的代码,跟你主贴的代码所调用的完全不是一个函数啊,你咋能期望其返回值是一个意思呢?
    去查询下JDK的API好吗?另外,你换个思路想想,如果说:
    ch = System.in.read();  
    这句话得到的不直接是其内容而仅仅是个长度,那这个内容就白白的这么就没得读取了?