将字符串转换为2d双数组

时间:2014-12-30 09:00:01

标签: java arrays string multidimensional-array

我想将字符串转换为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的新手,任何人都要提前感谢。

2 个答案:

答案 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