黑马程序员技术交流社区
标题:
能用System.in的流有哪些?
[打印本页]
作者:
刘伟平
时间:
2012-10-20 22:33
标题:
能用System.in的流有哪些?
本帖最后由 刘伟平 于 2012-10-21 09:07 编辑
public static int getInt() throws Exception
{
DataInputStream dis = new DataInputStream(System.in);
return dis.readInt();
}
复制代码
这样的语句对吗?
我运行后确实可以等待输入数据,但是输出的数字大的离谱,并不是我输入的个位数。
作者:
qhasilver
时间:
2012-10-20 23:05
DataInputStream 得到的是字节流,需要转换之后才能得到正确的字符。
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.InputStreamReader;
public class TestIn {
public static int getInt() throws Exception {
DataInputStream dis = new DataInputStream(System.in);
return Integer.parseInt(dis.readLine());//readLine方法已过时,API中标注无法正确将字节数据转换为字符数据,推荐以下被注释掉的两行代码
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//return Integer.parseInt(br.readLine());
}
public static void main(String[] args){
try {
System.out.println(getInt());
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
作者:
草上飞
时间:
2012-10-21 00:19
import java.io.InputStream;
public class SystemDemo04 {
// 抛出异常
public static void main(String[] args) throws Exception {
InputStream input = System.in; // 从键盘接收数据
byte b[] = new byte[1024]; // 开辟内存空间,接收数据
System.out.print("请输入内容:");
int len = input.read(b); // 接收从键盘输入的数据
System.out.println("输入的内容为:" + new String(b, 0, len));
input.close(); // 必须要关闭输入流
}
}
作者:
新立
时间:
2012-10-21 00:37
语法上没错,
但是DateInputStream 数据输入流允许应用程序以与机器无关方式从底层输入流中
读取基本 Java 数据类型,不能操作对象
。同时这个一般不用做输入的,多数情况应该和 DataOutputStream一起用。
而且读取文本行的首选方法是使用 BufferedReader.readLine() 方法
以下是api中的方法说明,
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 开始,读取文本行的首选方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 类读取文本行的程序可以改为使用 BufferedReader 类,只要将以下形式的代码:
DataInputStream d = new DataInputStream(in);
替换为:
BufferedReader d= new BufferedReader(new InputStreamReader(System.in));
参见 DataInput 的 readLine 方法的常规协定。
作者:
唐进
时间:
2012-10-21 00:40
对于基本数据输入流,我是这样理解的,DataInputStream里面的数据源是你键盘输入的字节数组,而你用readInt()方法读出的是一个32位的数字,也就是4个字节,因此前面可能会有空格,具体你可以在api比较readInt()方法和read()方法里面返回的数字位数就清楚了
作者:
刘伟平
时间:
2012-10-21 09:03
qhasilver 发表于 2012-10-20 23:05
DataInputStream 得到的是字节流,需要转换之后才能得到正确的字符。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
return Integer.parseInt(bufr.readLine());
这两句确实解决了,看来DataInputStream是有局限性的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2