Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中再次将2D数组转换为字符串,并将字符串转换为2D字符串_Java_Arrays_String_Parsing - Fatal编程技术网

在Java中再次将2D数组转换为字符串,并将字符串转换为2D字符串

在Java中再次将2D数组转换为字符串,并将字符串转换为2D字符串,java,arrays,string,parsing,Java,Arrays,String,Parsing,我有一个如下所示的数组: String private String array[][]; array = [["smthng","smthng","smthng","smthng"], ["smthng","smthng","smthng","smthng"]]; 我想将它转换为字符串来存储它,然后再次将它转换为2D数组,但我总是得到indexoutboundexception 我试过这个: private String twoDimensionalStringArrayToString(

我有一个如下所示的数组:

String private String array[][];

array = [["smthng","smthng","smthng","smthng"],
["smthng","smthng","smthng","smthng"]];
我想将它转换为字符串来存储它,然后再次将它转换为2D数组,但我总是得到indexoutboundexception

我试过这个:

private String twoDimensionalStringArrayToString(String[][] myArray) throws IOException {
    String res = "";
    for (int iRow = 0; iRow < myArray.length; iRow++) {
        for (int iCol = 0; iCol < myArray[iRow].length; iCol++)
            res += myArray[iRow][iCol] + ",";
        res += "\n";
    }
    return res;
}

private String[][] stringToTwoDimensionalStringArray(String res) throws ClassNotFoundException, IOException {

    String[] rows = res.split("\n");
    String[][] myArray = new String[rows.length][];
    for (int iRow = 0; iRow < rows.length-1; iRow++) {
        String[] cols = rows[iRow].split(",");
        myArray[iRow] = new String[cols.length];
        for (int iCol = 0; iCol < cols.length; iCol++)
            myArray[iRow][iCol] = cols[iCol];
    }
    return myArray;
}
下面是阅读它的步骤:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
mapa = stringToTwoDimensionalStringArray(sharedPref.getString("MAPA", null));

我们可以看看你尝试了什么吗?请提供一段代码。我已经用代码编辑了这个问题。它在给定的数组中运行,毫无例外。应该没问题。尽管如此,
stringToTwoDimensionalStringArray
中的内部循环是不必要的。您可以直接将
cols
分配给
myArray[iRow]
as
myArray[iRow]=cols
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
mapa = stringToTwoDimensionalStringArray(sharedPref.getString("MAPA", null));