我有一个要转换为double []数组的Arraylist。我首先将Arraylist转换为String []。然后,我尝试将String []转换为double [],但在此过程中失败。这是问题所在:字符串包含一些文本以及一些带小数的数字。我只想将数字和小数转换为double []数组,然后简单地删除文本。但是,我只知道如何使用字符串而不是String []删除文本。请看一下:
import java.util.ArrayList; import java.util.List; import jsc.independentsamples.SmirnovTest; public class example { public static void main(String[] arg) throws Exception { ArrayList<String> list1 = new ArrayList<String>(); ArrayList<String> list2 = new ArrayList<String>(); list1.add("RSP0001,1.11,1.22"); list1.add("RSP0002,2.11,2.22"); list1.add("RSP0003,3.11,3.22"); list1.add("RSP0004,4.11,4.22"); String[] str1 = new String[list1.size()]; str1 = list1.toArray(str1); str1.replaceAll("RSP_\\d+",""); double array1 = Double.parseDouble(str1); System.out.println(array1); } }
由此产生两个错误:第一个错误是str1.replaceAll处的“找不到符号”错误。第二个是“ Double.parseDouble”处的“ method parseDouble”错误。那里的问题是我需要一个String而不是String []。
关于如何将String []转换为double []的任何想法?
谢谢,
j
您需要在“,”上拆分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();
关键点:
ArrayList<Double>
ArrayList<ArrayList<Double>>
Double[]
Double[][]