java如何解析这个矩阵?
为了好玩,我决定编写一个Python程序,在不使用NumPy库的情况下对矩阵(数字数据的矩形集合)执行数学运算,但它是专门用于矩阵数学(线性代数)的。我已经用Python完成了这个程序,但从那时起,我决定尝试将其转换为Java代码。由于Python不像Java那样严格类型化,所以我目前的问题是以x x x, x x x, x x x, ...
的形式解析用户的字符串矩阵输入,其中每个数字由一个空格分隔,每行由一个逗号和一个空格分隔。我必须把它解析成[[x, x, x], [x, x, x], [x, x, x], [...]]
我创建了一个单独的函数,它将返回double[][] matrix
并接收用户输入,但为了测试,我将其返回类型保留为void,并以"1 2 3, 4 5 6, 7 8 9"
的形式给它一个默认的[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
矩阵
// Takes text input; transforms it into array of arrays (matrix)
// parse 'x x x, x x x, ...' into [[x, x, x], [x, x, x], [...]]
private static void parseMatrix(String matrix) {
// Separates each row (one array results)
String[] partMat = matrix.strip().split(", ");
// Supposed to create arrays out of rows (multiple arrays result)
for (int i = 0; i < partMat.length; i++) {
partMat[i].split(" ");
System.out.println(Arrays.toString(partMat));
}
}
public static void main(String[] args) {
parseMatrix("1 2 3, 4 5 6, 7 8 9");
}
在这个测试代码中,我希望它打印[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3次,但它打印[1 2 3, 4 5 6, 7 8 9]
3次。我错过了什么
# 1 楼答案
如果你对双[]满意,一行是可能的
它基本上是一种csv格式,所以commons csv也可以进行解析工作,但有一些难看的调整:
有些人认为,所有这些对象、拆分、流和库的东西都是非常蹩脚的,完全以第一人称模式创建这个功能更酷,非常低级的老式学校、扫描仪、解析器等等,而不是仅使用
char[]
这一古老的苦行传统。它的Possible,这样也可以将LoC增加70倍,而不引入不必要的代码,嗯。。。不多,单元测试不算在内# 2 楼答案
aString.split(" ")
调用返回一个结果数组,您将忽略它,但不会修改原始数组。您需要使用其结果将新解析的行存储到某个位置:# 3 楼答案
您的输出是2D数组,因此解析应该这样做