与えられた文字列をベクトルに「解析」したい。ベクトルは「[」で始まり、「]」で終わります。ベクトルの値とベクトル自体は、「、」で区切られます。整数を値として使用すると、コードは「[1,2,3]、[5,2,3]、[1,6,3]」で正常に機能します。しかし、整数値と二重値 "[ 1、2.5、3]、[ 5,2,3 ]、[1,6,3]"を混在させると、stringtokenizerは間違った値を返します(この場合は "1" "2.5"ですが、 " 3] " ......)
String s = "[1,2.5,3],[5,2,3],[1,6,3]";
Vector<Vector<Double>> matrix = new Vector<Vector<Double>>();
for(int j=0;j<s.length();j++) {
if (s.charAt(j)=='[') {
int k=s.indexOf("]");
StringTokenizer st = new StringTokenizer(s.substring(j+1, j+k));// j+k-1 does not work either
Vector<Double> vector = new Vector<Double>();
while (st.hasMoreTokens()) {
vector.add(Double.parseDouble(st.nextToken(",")));//Exception in thread "main" java.lang.NumberFormatException: For input string: "3]"
}
matrix.add(vector);
}
}