0

假设我有一个由空格分隔的六个整数的输入。

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();and thens.split(" ")来选择单个值。另一种选择是使用scannerwhich 做同样的事情。命令行参数提供了一些缓解,但我们不能在运行时使用它。

我想问是否有任何直接的单行方法来选择这些空格分隔的整数?

(有一个类似的标题问题,但它是基本的和离题的,所以我提出了这个问题)(那里

4

1 回答 1

0
import java.util.Scanner; //in the beginning of your code

Scanner scan = new Scanner(System.in); //somewhere along you're code

在这里,有两种方法。通常,您在 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());
于 2013-10-06T12:20:04.240 回答