//读一个字符
char num = (char) System.in.read();
为什么一定要强制转换成char呢?

解决方案 »

  1.   

    System.in.read() 回傳的是int,所以要轉型。
      

  2.   

    因为你是要把读取的值赋给num,而num是char型的,所以你得转换啊。不过,貌似会自动转换吧,不记得了
      

  3.   

    不太清楚
    API中对于该方法是这样说的:从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。
      

  4.   

    读取到的是int类型的值,但是你要char类型的,这个要强制类型转换!不然编译会报错,所以要转换!
      

  5.   

    因为System.in.read()不是一个常量表达式,编译器只知道read返回一个int值,但是不知道read返回的是0-255之间的数,它就认为读进来的数可能会超过char的范围(0-65535),那么为什么char c = 100可以编译通过呢?就是因为编译器编译的时候知道100不超过65535,如果换成:char c = 11111111111111111111;马上就报错了。
    还有就是任何char 变量都可以直接赋给int变量,因为int的范围大。
      

  6.   

    System.in,返回类型为 InputStream(标准输入流)
    InputStream.read()从输入流读取下一个数据字节,返回类型为int,
      

  7.   

    read出来的不是char类型的,所以要转换。。
      

  8.   

    System.in,返回类型为 InputStream(标准输入流)
    InputStream.read()从输入流读取下一个数据字节,
    字节在内存中以2进制形式存储,1个字节8位,返回值为此8位2进制对应的int值
      

  9.   

    System的in是静态常量,调用时创建一个 InputStream对象,InputStream对象read()只是读一个字节,而一个字节在内存中是8位,所以,不可能超过65535,理解了么?