java - 如何打印彼此相邻的二维数组矩阵的格式化字符串

标签 java arrays matrix multidimensional-array formatting

我得到了一个字符串并将其转换为二维数组。 给出的字符串是 *23**23412341_3*

我编写的将其转换为二维数组的代码是:

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* 

关于java - 如何打印彼此相邻的二维数组矩阵的格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104993/

相关文章:

java - 使用 map 真的能降低圈复杂度吗?

javascript - lodash:从数组中获取重复值

C:所有字符串文字都有静态存储期限吗?

arrays - MATLAB 2013a : sum + squeeze dimension inconsistencies

java - 是否可以以某种方式扩展标记为最终的 Joda-Time 类?

java - 使用 assertTrue() 验证 selenium 中文本的存在

Java正则表达式匹配

php - 使用 PHP 将数组值分配给增量变量以插入到 mysql 表中

R错误: "number of items to replace is not a multiple of replacement length"

r - 使用 ifelse 从矩阵中提取信息