Java 打印包含多个矩阵的数据文件

Java 打印包含多个矩阵的数据文件,java,arrays,loops,matrix,Java,Arrays,Loops,Matrix,我为一个班级写的程序遇到了问题。 我得到了一个包含三个矩阵的文本文件,我需要创建一个循环,通过各种过滤器在输出中打印出所有三个矩阵 以下是该文件包含的内容: 15 15 91 114 75 145 149 250 31 103 88 123 27 120 187 140 52 108 23 43 126 51 9 107 29 20 221 18 41 178 245 159 187 53 7 107 96 82 70 2 171 2 36 84 135 187 92 176 30 19

我为一个班级写的程序遇到了问题。 我得到了一个包含三个矩阵的文本文件,我需要创建一个循环,通过各种过滤器在输出中打印出所有三个矩阵

以下是该文件包含的内容:

15 15

91 114 75 145 149 250 31 103 88 123 27 120 187 140 52 
108 23 43 126 51 9 107 29 20 221 18 41 178 245 159 
187 53 7 107 96 82 70 2 171 2 36 84 135 187 92 
176 30 199 230 178 61 48 211 208 143 178 207 79 196 217 
26 6 117 170 4 245 63 93 108 44 163 19 6 220 131 
7 210 228 154 213 96 102 254 63 34 25 215 168 23 207 
131 254 198 215 164 6 141 150 147 26 242 199 237 131 240 
102 22 248 74 26 3 138 145 132 120 97 126 8 86 166 
178 68 73 127 56 180 182 152 3 149 184 42 204 9 172 
104 203 99 132 204 137 33 69 140 19 131 38 239 56 180 
163 249 88 222 98 150 58 155 115 188 70 189 162 33 1 
113 141 52 196 139 241 68 37 89 215 166 7 200 179 26 
21 68 167 53 226 167 193 232 133 79 212 163 101 157 233 
122 17 114 224 129 247 35 84 120 51 91 149 127 150 19 
217 253 145 45 205 179 107 76 214 48 230 218 8 135 25 

6 6

201 159 87 63 240 244 
231 32 222 76 5 255 
10 5 248 139 47 64 
167 76 138 177 107 159 
188 122 154 165 205 22 
222 149 148 85 129 57 

5 5

201 159 87 63 240  
231 32 222 76 5  
10 5 248 139 47 
167 76 138 177 107 
188 122 154 165 205 
我能够得到一个循环来读取文件并打印出第一个15x15数组,但是我需要一个循环来打印出后面的三个数组,包括应用于数据的过滤器

即:

Base image data:
(15x15 array)
(6x6 array)
(5x5 array)
Filtered data:
(15x15 filtered)
(6x6 filtered)
(5x5 filtered)
我能够很好地打印出第一个数组,但我正在绞尽脑汁试图找到一种方法来循环代码以打印出另外两个数组。此外,我还有第二个问题,即打印过滤后的数据时,都是这样的:

Base Image Data
91 114 75 145 149 250 31 103 88 123 27 120 187 140 52
108 23 43 126 51 9 107 29 20 221 18 41 178 245 159
187 53 7 107 96 82 70 2 171 2 36 84 135 187 92
176 30 199 230 178 61 48 211 208 143 178 207 79 196 217
26 6 117 170 4 245 63 93 108 44 163 19 6 220 131
7 210 228 154 213 96 102 254 63 34 25 215 168 23 207
131 254 198 215 164 6 141 150 147 26 242 199 237 131 240
102 22 248 74 26 3 138 145 132 120 97 126 8 86 166
178 68 73 127 56 180 182 152 3 149 184 42 204 9 172
104 203 99 132 204 137 33 69 140 19 131 38 239 56 180
163 249 88 222 98 150 58 155 115 188 70 189 162 33 1
113 141 52 196 139 241 68 37 89 215 166 7 200 179 26
21 68 167 53 226 167 193 232 133 79 212 163 101 157 233
122 17 114 224 129 247 35 84 120 51 91 149 127 150 19
217 253 145 45 205 179 107 76 214 48 230 218 8 135 25
Image Filter1:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我的代码非常广泛,所以我很难确定它返回0的原因

这是我的密码:

publicstaticvoidmain(字符串[]args)引发IOException{
Scanner Scanner=新扫描仪(新文件(“imagedata.txt”);
int r=scanner.nextInt();
int c=scanner.nextInt();
int[]imageData=新的int[r][c];
//用于循环从图像数据创建二维阵列

对于(int row=0;row,您只需逐行读取此文件,将每个字符串拆分为一个数字数组,然后将其格式化为三个字符的字符串,将其连接回并输出。无论此文件中有多少个矩阵

List List=List.of(
"91 114 75 145 149 250 31 103 88 123 27 120 187 140 52",
"108 23 43 126 51 9 107 29 20 221 18 41 178 245 159",
"187 53 7 107 96 82 70 2 171 2 36 84 135 187 92");
list.stream()
.map(str->array
//将字符串拆分为数字数组
.stream(str.split(“\s+”))
//格式为三个字符的字符串
.map(s->String.format(“%3s”,s))
//连接成单个字符串
.collect(收集器.连接(“”))
//逐行输出
.forEach(System.out::println);
输出:

 91 114  75 145 149 250  31 103  88 123  27 120 187 140  52
108  23  43 126  51   9 107  29  20 221  18  41 178 245 159
187  53   7 107  96  82  70   2 171   2  36  84 135 187  92

你试过逐行阅读吗?那会使解析文件更容易方法并知道这些数组的大小将使解析变得更容易通常,这将是一个很好的选择,但是,我的程序要求我创建一个可以应用于所有2D数组的循环。我的教授将使用包含不同数量数组的不同文件对其进行测试,所以不幸的是,我不知道数组的大小未知数组。你会知道数组的大小,数组前的第一行告诉你数组的尺寸15x15、6x6、5x5等等。我确信他测试的文件将使用这种格式,其中文件中有两个数字的行将是数组的尺寸,如果你逐行读取,将行围绕一个空格分开racter并检查返回的大小可以让您知道正在查看的内容。如果拆分的大小为0,则有一个空行并可以继续,如果拆分后的数组为2,则您知道要分析一个新数组,并且可以假定变量大小是数组的一部分。