Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java读取输入_Java_User Input - Fatal编程技术网

用java读取输入

用java读取输入,java,user-input,Java,User Input,我有两种类型的输入数据 a b c d e... 这里a、b等是要读取的值。它们都是相同的数据类型,可以是short、int、long或double。所有值都由一个或多个空格分隔。我们在一行中给出了这些,但我们不知道有多少。输入以换行结束。在第二种情况下,我们将count作为第一个变量“n”,然后是n个变量。e、 对于n=5,它看起来是这样的 n a b c d e 这可以通过扫描仪完成,但我听说扫描仪读取输入比bufferedReader方法慢。除了使用Scanner类之外,我正在寻找任

我有两种类型的输入数据

a b c d e... 
这里a、b等是要读取的值。它们都是相同的数据类型,可以是short、int、long或double。所有值都由一个或多个空格分隔。我们在一行中给出了这些,但我们不知道有多少。输入以换行结束。在第二种情况下,我们将count作为第一个变量“n”,然后是n个变量。e、 对于n=5,它看起来是这样的

n a b c d e

这可以通过扫描仪完成,但我听说扫描仪读取输入比bufferedReader方法慢。除了使用Scanner类之外,我正在寻找任何可能的方法来实现这一点。我是Java新手。请提供帮助。

特别是当您刚接触一种语言或环境时,我建议您从易于理解但功能强大的语言或环境开始

 String inputline = "n a b c d e";
 // Obtain real inputline eg by reading it from a file via a reader
 inputline = someBufferedReaderDefinedElsewhere.readLine();
 String[] parts = inputline.split(" ");

 // easiest for case 1
 for (String part : parts) {
     ...
 }

 // easiest for case 2
 int numberToRead = Integer.parseInt(parts[0]);
 // not < but <= because you start reading at element 1
 for (int ii=1;ii<=numberToRead;ii++) {
      ...
 }
String inputline=“n a b c d e”;
//通过读卡器从文件中读取实际的输入线
inputline=SomeBufferedReaderDefinedWhere.readLine();
String[]parts=inputline.split(“”);
//对于案例1最简单
用于(字符串部分:部分){
...
}
//对于案例2来说最简单
int numberToRead=Integer.parseInt(部分[0]);

//不是<而是我会先得到有效的东西。一旦您了解了瓶颈,只有这样才值得尝试优化它

为了回答您的问题,IMHO,读取数据的最快方法是使用内存映射文件并解析ByteBuffer,假设您有ASCII 8位字节数据(数字的合理假设),避免完全使用内置解析器。这将快得多,但对于更复杂、更彻底的过度杀戮也会有很大帮助。;)


如果您想让如何直接从ByteBuffer解析数字的示例更快,您可以使用不安全的类,但这不是标准Java。

不要尝试用最快的方法,而是用最简单、最直观的方法。@darioo:实际上,我一直在寻找最快的速度,因为有时我需要在严格的时间限制内读取大量数据。@tendua您确定处理时间对您的情况很重要吗?因为过早的优化是造成很多痛苦的一个已知原因…我们如何在您的答案中定义“输入线”?我们不知道在编写代码时会给出什么字符串。@tendua任何从您的输入中获取一行的方法都可以,我修改了我的答案,以显示从(缓冲)读取器获取的一行。