我得到了一个字符串,并将其转换为2D数组。给出的字符串是*23**23412341_3*
我编写的将其转换为2D数组的代码是:
public String[][] str2arr(String str)
{
String[] rows = str.split("(?<=\\G....)"); // split the string at every 4th character
String[][] matrix = new String[rows.length][];
int r = 0;
for (String row : rows)
{
matrix[r++] = row.split("(?<=\\G.)"); // split each of the string of each row
}
return matrix;
}
这段代码给出了类似的结果 [[*, 2, 3, *], [*, 2, 3, 4], [1, 2, 3, 4], [1, _, 3, *]]
我将其格式化为
*23*
*234
1234
1_3*
使用此代码:
public void printMatrix(String[][] x)
{
for (int i=0; i < x.length; i++)
{
for (int j=0; j<x[0].length; j++)
{
System.out.print(x[i][j] + "");
}
System.out.print("\n");
}
}
但是现在我得到了第二个字符串,需要将其显示在矩阵的侧面(右侧),而不是在第一个矩阵的底部。
*23* *23*
*234 *234
1234 1234
1_3* 1_3*
这可能吗?如果不是,为什么不这样做,以及如何更新此代码,以便可以实现自己的目标。
你不能做你所要问的。但是您可以改为同时打印两个矩阵。
创建一个包含所有矩阵的类。这将假定所有矩阵都具有相同的维数:
public class MatrixHolder {
private List<String[][]> matrices = new ArrayList<>();
public void addMatrix(String[][] matrix) {
matrices.add(matrix);
}
public void printMatirces() {
for(int i = 0; i < matrices.get(0).length; i++) {
for(int j = 0; j < matrices.size(); j++) {
System.out.print(rowString(matrices.get(j)[i]) + " ");
}
System.out.println();
}
}
private static String rowString(String[] row) {
StringBuilder sb = new StringBuilder();
for(String s : row)
sb.append(s);
return sb.toString();
}
}
这是一个如何使用它的示例:
String input = "*23**23412341_3*";
MatrixHolder mh = new MatrixHolder();
mh.addMatrix(str2arr(input));
mh.printMatirces();
System.out.println();
mh.addMatrix(str2arr(input));
mh.printMatirces();
输出:
*23*
*234
1234
1_3*
*23* *23*
*234 *234
1234 1234
1_3* 1_3*
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句