我想将字符串转换为2d double数组。我的字符串是:"( - 34.17141334413566,148.1231689453125),( - 34.371148707267096,149.0130615234375),( - 34.475366823896806,147.919921875)"。结果就像 double [3] [3] y = {{-34.17141334413566,148.1231689453125},{ - 34.371148707267096,149.0130615234375},{ - 34.475366823896806,147.919921875}}。我是java.help的新手,任何人都要提前感谢。
答案 0 :(得分:0)
如果我理解了这个问题,你想要从字符串(文本文件,扫描仪......)转换双打数据
您可以根据以下内容使用:
Double[] array = new Double[2];
String s = "-34.17141334413566, 148.12316894531252";
String[] stringArray = s.split(",");
array[0] = Double.parseDouble(stringArray[0].trim());
array[1] = Double.parseDouble(stringArray[1].trim());
注意Double.parseDouble(String s)和他的异常。
如果我不理解这个问题,抱歉;)
编辑:当然我的例子是一维数组,为你的第二维使用不同的字符拆分器。
答案 1 :(得分:0)
试试这个:( str是你的输入)
String str = "(-34.17141334413566, 148.1231689453125)," +
"(-34.371148707267096, 149.0130615234375)," +
"(-34.475366823896806, 147.919921875)";
str = str.replace("(", "");
String[] rows = StringUtils.split(str, "),");
double[][] doubles = new double[rows.length][StringUtils.split(rows[0], ", ").length];
for (int i = 0; i < rows.length; i++)
{
String[] cols = StringUtils.split(rows[i], ", ");
for (int j = 0; j < cols.length; j++)
{
cols[j] = cols[j].replace(")", "");
doubles[i][j] = Double.parseDouble(cols[j]);
}
}
确保至少有一行(检查它)。 StringUtils是一个Apache Commons对象,从这里免费获取它的JAR:http://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.3.2