2013-10-06 57 views
0

假設我有一個由空格分隔的六個整數的輸入。從Java控制檯採集空格分隔的整數

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中,方法(我知道)我真的很刺激,儘量在me.You必須要麼使用

BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 

然後,我們可以使用String s=br.readLine();,然後s.split(" ")挑選單個值。另一種方法是使用scanner,它的功能相同。命令行參數提供了一些解決方法,但我們不能在運行時使用它。

我想問的是沒有任何直接的一行方法來挑選這些空間分離的整數?

(有一個similar標題的問題,但它的基本的和偏離主題,所以我提出這個問題) (有

+1

爲什麼不你把它們放在一個集合中?更容易,更一般。 –

+0

@DaveNewton:您能否提供一個示例或代碼片段來說明此問題的完整性 –

+0

您展示的方法是最佳選擇。你可以鏈接'String [] s = br.readLine()。split(「」);'如果你真的討厭線條,就是這樣。 –

回答

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());