在Java中从控制台拾取空格分隔的整数
假设我有一个由空格分隔的六个整数的输入在Java中从控制台拾取空格分隔的整数,java,Java,假设我有一个由空格分隔的六个整数的输入 2 7 10 34 2 11 如果我想选择六个变量inta,b,c,d,e,f 在C中,我可以直接像下面这样做 scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f); 在Java中,我知道的方法对我来说真的很烦人 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 然后我们可以
2 7 10 34 2 11
如果我想选择六个变量inta,b,c,d,e,f代码>
在C
中,我可以直接像下面这样做
scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);
在Java中,我知道的方法对我来说真的很烦人
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
然后我们可以使用String s=br.readLine()
然后s.split(“”
来选择单个值。另一种选择是使用scanner
,其作用相同。命令行参数提供了一些缓解措施,但我们不能在运行时使用它
我想问的是,是否有任何直接的单线方法来选取这些空格分隔的整数
(有一个有标题的问题,但它是基本的和离题的,所以我提出了这个问题)
(那里
这里有两种方法。
通常,您在System.in中输入的所有内容都会被保存,像.nextInt()或next()这样的方法将采用第一个用空格分隔的值,每次使用该方法时,您可以输入更多的值,但它会将其放在您输入的第一个值之后:
例:
您使用scan.nextInt()并输入:“1 2 3”,它需要1,但您仍然有“2 3”
再次使用scan.nextInt()将允许您输入更多值,如果您输入的是“4 5 6”,则.nextInt()将取2,但您现在将得到“3 4 5 6”
我喜欢使用的方法如下:
String str = scan.nextLine();
int[] array = new int[6]
int count = 0;
Scanner strScan = new Scanner(str);
while(strScan.hasNext())
{
array[count]=Integer.parseInt(str.next());
count++;
}
但您也可以使用:
String str = scan.nextLine();
Scanner strScan = new Scanner(str);
a = Integer.parseInt(scan.next());
b = Integer.parseInt(scan.next());
...
f = Integer.parseInt(scan.next());
为什么不把它们放在一个集合中呢?更简单、更一般。@DaveNewton:你能为这个问题的完整性提供一个例子或代码片段吗?你展示的方法是最好的选择。你可以将String[]s=br.readLine().split(“”)链接起来如果你真的讨厌行,那就到此为止。这些都是很好的解决方案,而且代码比使用reader少,
String str = scan.nextLine();
Scanner strScan = new Scanner(str);
a = Integer.parseInt(scan.next());
b = Integer.parseInt(scan.next());
...
f = Integer.parseInt(scan.next());