【问题标题】:java console inputjava控制台输入
【发布时间】:2010-05-25 04:45:03
【问题描述】:

任何通过控制台输入的数据类型(就像我使用 BufferedReader 类一样)是 String。之后我们将它类型转换为请求的数据类型(如 Inter.parseInt() 用于整数)。但是在 C 中我们可以采用任何原始数据类型的输入,而在 java 中,所有输入类型都必须是 String。为什么会这样????

【问题讨论】:

    标签: java


    【解决方案1】:

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

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

    InputStreamReader 将字节流转换为字符流,然后 BufferedReader 用于执行您的 readLine() 操作或其他操作。

    所以它是String 输出,因为您从BufferedReader 获取字符流的缓冲输出。

    【讨论】:

      【解决方案2】:

      在java中你可以这样做:

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

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

      编辑:错过了缓冲阅读器部分。我认为这个答案是完全无关紧要的。

      【讨论】:

      • 我的意思是问为什么默认情况下输入是字符串数据类型......为什么不是其他的。java 风格输入比 C 有什么好处,我们可以输入所有原始数据类型
      • @Bipul 就像 webdestroya 在我之前说的,这就是 java 的工作原理。我很确定,当您在命令提示符中输入值时,java 将这些值识别为字符串而不是原语,以保持简单,而不是在尝试扫描之前弄清楚它是什么。Java 离开由用户决定输入是什么。很抱歉回复不满意,因为我不太确定我刚才所说的内容。
      • 我同意你的观点,java 这样做是为了让事情变得更简单,让用户自己决定。谢谢
      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多