我给了一个字符串并将其转换为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*
这可能吗?如果没有,为什么不,如何更新此代码,以便达到我的目标。
答案 0 :(得分:1)
你不能做你所要求的。但你可以改为,并排打印两个矩阵。
创建一个包含所有矩阵的类。这将假设所有矩阵具有相同的尺寸:
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*
答案 1 :(得分:0)
您可以绑定String [] [] x,然后显示绑定的xes。
public String[][] cbind(String[][] x1, String[][] x2) {
String[][] output = new String[x1.length][x2[0].length +x2[0].length];
for (int i = 0; i < x1.length; i++) {
for (int j = 0; j < x1[0].length; j++) {
output[i][j] = x1[i][j];
}
for (int j = 0; j < x2[0].length; j++) {
output[i][j + x1[0].length] = x2[i][j];
}
}
return output;
}