2010-05-25 126 views
2

任何通过控制台输入(如我使用BufferedReader类)的数据类型是String.After我们类型转换为重新请求的数据类型(Inter.parseInt()为整数)。但在C我们可以接受任何原始数据类型的输入,而在java中,所有输入类型都是坏字符串。为什么它是这样的?java控制台输入

回答

5

控制台输入实际上是作为一系列字节读入的,而不是字符串。这是因为System.in被API公开为InputStream。 (!万岁的Scanner类)JDK1.5之前,典型的包装是一样的东西:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

InputStreamReader字节流转换为字符流,然后BufferedReader是用来做你readLine()操作,管他呢。

所以这是一个String输出,因为你从BufferedReader获取字符流的缓冲输出。

3

在java中,你可以这样做:

Scanner scan = new Scanner(System.in); 
scan.nextInt(); 
scan.nextDouble(); 

等你只需要确保下一个输入是正确的。

编辑:错过了缓冲的阅读器部分。我认为这个答案是完全不相信的。

+0

我的意思是问为什么输入是默认的字符串数据类型....为什么不other.java样式输入的优点比C我们有设施输入所有原始数据类型 – condinya 2010-05-25 04:51:55

+0

@Bipul像webdestroya说在我之前,这只是Java的工作原理。我敢肯定,当你在命令提示符中输入值时,为了简单起见,java将它们识别为字符串而不是原语,而不是在试图扫描它之前试图弄清楚它是什么。Java离开它由用户知道输入是什么。 对不满意的答复,因为我不是很确定我刚才所说的。 – exodrifter 2010-05-25 04:58:10

+0

我同意你说java是为了使事情变得简单而让它给用户决定。谢谢 – condinya 2010-05-25 05:06:44