【问题标题】:Create a matrix from a string从字符串创建矩阵
【发布时间】:2021-09-23 13:47:17
【问题描述】:

假设一个字符串s = "1 2\n3 4";目标是创建一个矩阵

$ \begin{bmatrix}
1 & 2 \\
3 & 4 
\end{bmatrix}  $

我有以下代码:

    public static String[] buildFrom(String s) {

        String lines[] = s.split("\\r?\\n");
        String newlines[] = new String[lines.length];
        int i;
        for (i = 0; i < lines.length; i++)
            newlines[i] = Arrays.toString(lines[i].split("\\s+"));
        return newlines;

输出为[[1, 2], [3, 4]] 它似乎是一个 String[],但是我需要一个 String[][]。问题似乎是Arrays.toString 的使用,但我不知道我还能使用什么。

欢迎任何帮助。

【问题讨论】:

  • String.join(" &amp; ", lines[i].split("\\s+"))?
  • "输出是 [[1, 2], [3, 4]] 好像是 String[]" 就是你声明的返回类型。

标签: java arrays string


【解决方案1】:

这会如您所愿返回String[][]

public static String[][] buildFrom(String s) {
    String[] lines = s.split("\\R");
    String[][] matrix = new String[lines.length][];
    for (int i = 0; i < lines.length; i++) {
        matrix[i] = lines[i].split("\\s+");
    }
    return matrix;
}

您可能需要进行额外检查以确保您的矩阵有效,例如所有行具有相同数量的元素。

您的主要问题是您将输出变量声明为String[] 而不是您真正想要的String[][],因此您只能将其索引(在这种情况下为行)设置为@987654325 @ 而不是String[]。因此,您似乎使用 Arrays.toString(String[]) 将您想要的行的 String[] 转换为 String 以解决该编译错误。

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多