2016-04-13 16 views
2

我使用的是Scanner讀取一個字符串應該是這樣的:如何從一個字符串雙打和整數讀不讀逗號

"1.0, 1, 3.0, 4, 2.0, 6" 

這是一個雙,其次是一個int等,分離以逗號分隔。

設置我的掃描儀

Scanner in = new Scanner(string); 

然後使用它是這樣的:

newNode.coefficient = in.nextDouble(); 
newNode.exponent = in.nextInt(); 

當不包含逗號的字符串,它工作正常。但是我的字符串有如上所示的逗號。

如何跳過逗號?

我不想分割字符串(即使格式將保持不變,字符串的長度也會不同),所以請不要向我解釋這一點。

+1

設置掃描儀的[定界符](https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#delimiter--)包括逗號。 – AJNeufeld

回答

2

設置掃描儀的分隔符接受逗號:

Scanner input = new Scanner(System.in).useDelimiter(", "); 

缺省的分隔符是空白的,但你可以通過useDelimiter()它設置爲別的東西。

此外,由於分隔符是一個正則表達式,你可以使逗號可選的太后面的空格:

Scanner input = new Scanner(System.in).useDelimiter(", ?"); 
0

從掃描文檔:

掃描儀還可以使用比其他的分隔符空白。這個例子從一個字符串讀取若干項:

String input = "1 fish 2 fish red fish blue fish"; 
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); 
System.out.println(s.nextInt()); 
System.out.println(s.nextInt()); 
System.out.println(s.next()); 
System.out.println(s.next()); 
s.close(); 

你可以簡單地將掃描儀設置爲使用逗號空格組合作爲分隔符。

in.useDelimiter("\\s*,\\s*"); 
相關問題