在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]
asmyArray[iRow]=cols代码>。
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
mapa = stringToTwoDimensionalStringArray(sharedPref.getString("MAPA", null));