在Java中输入

时间:2018-02-18 15:07:49

标签: java input user-input

如果有人可以提供帮助,我会有些困惑。尝试在网上搜索但没有得到任何令人满意的答案。

为什么我们不像使用输出那样简单地使用System.in.somemethod()来获取Java中的输入?与使用System.out.println()一样,为什么不System.in呢?为什么输入有一个很长的过程?

3 个答案:

答案 0 :(得分:5)

System.inInputStream提供的唯一方法是read的重载。当然,你可以这样做:

    byte[] bytes = new byte[5];
    System.in.read(bytes);
    System.out.println(Arrays.toString(bytes));

从控制台读取五个字节。但这有以下缺点:

  • 您需要处理已选中的IOException。 (未在上面的代码段中显示)
  • 难以使用字节。 (除非你特别要他们)
  • 您通常只想读取输入直到行尾。有了它,很难知道一条线的末端在哪里。

这就是为什么人们使用ScannerSystem.in流包装成更加用户友好的内容。

答案 1 :(得分:2)

从命令行获取输入总是比输出数据更棘手。这是因为没有办法知道输入语义正确,结构正确甚至语法正确。

如果你只想从System.out读取 bytes ,那么输入的很多不确定性就会消失。在这种情况下,只需要考虑两件事:I / O错误和输入结束 - 这两者都存在于InputStream中。唯一可能棘手的问题是read可能无法返回对System.in的单次调用中请求的所有字节。

因此,从Scanner读取数据并不难; 解释数据 - 通常归结为解析数据或验证数据 - 是困难的部分。这就是为什么经常使用{{1}}类来理解输入。

答案 2 :(得分:-2)

正如您无法使用System.out.somemethod()代替System.out.println()一样,您无法使用System.in.somemethod()代替System.in.read()