2016-11-09 65 views
0

我遇到了分隔符問題。我的代碼如下:Java定界符問題

Scanner in=new Scanner(System.in); 
in.useDelimiter("\\D"); 
int x,y,z; 
System.out.println("Enter 3 digits: "); 
x=in.nextInt(); 
y=in.nextInt(); 
z=in.nextInt(); 
System.out.println(x + " " + y + " " + z); 
in.close(); 

原諒我缺乏的帶分隔符的經驗,但我只能得到我的程序與1個字符,而不是兩個不同的輸入。該程序必須能夠輸入如下:

或者1 2 31, 2, 3。 目前它可以處理1 2 31,2,3但不1, 2, 3

在過去的情況下,多餘的空格,必須把它扔了。你如何處理這個問題?

此外,我必須能夠接受可變數量的整數作爲輸入,最多100個整數,並將它們插入隊列中。顯然,我定義的三個變量是不夠的,但明確定義100也是矯枉過正。什麼是最有效的方式來處理這個問題?提前致謝。

+0

你需要分隔符嗎? 'nextInt'應該正確地讀取整個數字 –

+0

1.使用arraylist存儲值2.查看此答案以獲取有關分隔符的更多說明:http://stackoverflow.com/a/28766480/2235972 – rafid059

回答

2

嘗試將分隔符更改爲\\D+(即in.useDelimiter("\\D+");)。

編輯:
此刻,你問的分隔符拆就單個非數字字符。通過添加+你告訴它分割連續的非數字字符塊。分隔符是一個正則表達式,而且也對那些在這裏的更多信息:www.regular-expressions.info/tutorial.html

+0

目前,您要求分隔符分割爲一個非數字字符。通過添加「+」,你可以告訴它將分割成連續的非數字字符塊。分隔符是一個正則表達式,這裏有更多的信息:http://www.regular-expressions.info/tutorial.html –

+0

謝謝。現在好多了。 –

0
Scanner in=new Scanner(System.in); 
in.useDelimiter("\\D+"); 
int n=5; // Here you should define your limit 
int[] data=new int[n]; 
for(int i=0;i<data.length;i++) 
{ 
    System.out.println("Enter "+i+" digit: "); 
    data[i]=in.nextInt(); 
} 

// print store value 
for(int i=0;i<data.length;i++) 
{ 
    System.out.println(data[i]); 
} 
in.close(); 

上面的代碼可以幫助你獲得N無。的整數輸入