您需要在“,”上拆分list1中的每个String,然后尝试解析每个被拆分的String:
ArrayList<Double[]> results = Lists.newArrayList(); for( String s : list1 ) { String[] splitStrings = s.split(","); Double[] doublesForCurrentString = new Double[splitStrings.length]; for(int i=0; i<splitStrings.length; i++){ try { doublesForCurrentString[i] = Double.valueOf(splitStrings[i]); } catch( NumberFormatException ex ) { // No action. } } results.add(doublesForCurrentString); } Double[][] doubleArray = (Double[][])results.toArray();关键点:
- 编辑 :正如@Tim Herold所指出的,在性能方面,您可能会更好,避免尝试解析您知道的非数字内容。在这种情况下,我仍然会先进行拆分,然后再放入代码中,以防止您尝试在每行的第一个拆分String上解析parseDouble(),而不是尝试在拆分之前进行String替换;这样会更快(并且如果我们不关心性能,那么try / catch非常好并且可读性更好)。 原文 :当您尝试分析双打时,如果有任何无效输入,则需要try / catch。奖励:您现在不需要删除非数字文本,只需让此try / catch处理即可。
- 您的琴弦各有 两个 双打。您将不能只在开头删除文本,然后解析其余文本,因为这将不是有效的double。
- ArrayList通常更易于使用;我会选择返回
ArrayList<Double>
(或ArrayList<ArrayList<Double>>
)以上Double[]
或Double[][]
每周的任何一天。当然,在某些情况下,我会做一些不同的事情,但是您的情况在我看来并不像其中之一。


![将带有文本的String []转换为double [] 将带有文本的String []转换为double []](http://www.mshxw.com/aiimages/31/428983.png)
