假设我有一个由空格分隔的六个整数的输入。
2 7 10 34 2 11
如果我想选择六个变量int a,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
来执行相同的操作。命令行参数提供了一些缓解但我们无法使用它在运行时。
我想问一下,是不是有任何直接的单行方法来选择这些空格分隔的整数?
(有一个similar标题问题,但它是基本的和偏离主题所以我提出了这个问题) (有
答案 0 :(得分:0)
import java.util.Scanner; //in the beginning of your code
Scanner scan = new Scanner(System.in); //somewhere along you're code
这里有2种方法。 通常,您在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());