【发布时间】:2010-05-25 04:45:03
【问题描述】:
任何通过控制台输入的数据类型(就像我使用 BufferedReader 类一样)是 String。之后我们将它类型转换为请求的数据类型(如 Inter.parseInt() 用于整数)。但是在 C 中我们可以采用任何原始数据类型的输入,而在 java 中,所有输入类型都必须是 String。为什么会这样????
【问题讨论】:
标签: java
任何通过控制台输入的数据类型(就像我使用 BufferedReader 类一样)是 String。之后我们将它类型转换为请求的数据类型(如 Inter.parseInt() 用于整数)。但是在 C 中我们可以采用任何原始数据类型的输入,而在 java 中,所有输入类型都必须是 String。为什么会这样????
【问题讨论】:
标签: java
控制台输入实际上是作为一系列字节读入的,而不是字符串。这是因为System.in 被 API 公开为InputStream。 JDK1.5 之前的典型包装(Scanner 类万岁!)类似于:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
即InputStreamReader 将字节流转换为字符流,然后 BufferedReader 用于执行您的 readLine() 操作或其他操作。
所以它是String 输出,因为您从BufferedReader 获取字符流的缓冲输出。
【讨论】:
在java中你可以这样做:
Scanner scan = new Scanner(System.in);
scan.nextInt();
scan.nextDouble();
等等。你只需要确保下一个输入是正确的。
编辑:错过了缓冲阅读器部分。我认为这个答案是完全无关紧要的。
【讨论】: