还是有关JAVA输入输出的问题

JAVA的输入输出流分为两种,字节流和字符流,这两种流怎么区别呢?还有呀,读取一个Float变量时,是不是可以用这种方法:
Float f=(Float)DataInputStream.readInt(System.in);
也就是说先读一个整型,再用强制转换成Float型。
还有,书上用这种方法得到一个整型量,是怎么回事呀?
int a=(int)System.in.read();
System.in.read方法不是只读一个字节吗,那么一个整型变量是16位,那么就只读了前八位,也就是高位字节,用read读后,在高位字节加0,那就不是这个整型变量呀!那又怎么能转换成一个整型变量呢?
[331 byte] By [yuanxulong198010-虫子] at [2007-12-16]
# 1
read()方法得到的是一个字节流,也就是说你输入“10回车”,得到的是‘1’、‘0’和‘\n’这三个字符,而不是一个int型的数10。
Java没有提供一种输入方法来从键盘读入一个字符串,然后自动转换为相应的数据类型。要做到这个,要自己使用类型包装器来转换。
建议你先好好看看书中关于I/O的介绍。
namowen-寒号不已 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 2
实在太谢谢namowen了,能不能问问你的QQ号呀!
yuanxulong198010-虫子 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 3
比如你输入了一个"1",那么read()方法得到的不是一个整数1,而是字符“1”的ASCII码,也就是65,强制转化为int后赋给a,这时a的值是65。
namowen-寒号不已 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 4
那么用什么方法可以接受键盘输入的数据,例如猜数游戏??谢谢。
dalong_aa-大龙 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 5
我想问的是,在java中,用的是16字节的编码,那么输入的时候,前八位是用read读后,再用read读取,read读的是前八位字节,那么就是0了,强制转换后,不就是0吗,又怎么能是整型值呢?
yuanxulong198010-虫子 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 6
你从Console上读入的是ASCII码 , 需要用Integer.parseInt()转换啊
farawayzheng_necas-遥远 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 7
read()读的是低八位,也就相当于ASCII码的值。
namowen-寒号不已 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 8
但是书上说的是,流是顺序读的,那就读的是高八位呀!
yuanxulong198010-虫子 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...
# 9
一个简单的读数例子:
static String s;
int i;
BufferedReader ipt=new BufferedReader(new InputStreamReader(System.in));
s=ipt.readLine();
i=Integer.parseInt(s);
注意,字符串s必须为static,否则不能编译!
kuky121-不倦 at 2007-10-23 > top of Msdn China Tech,Java,J2SE,基础类...