Java 如何从文本文件特定行中提供的值创建二维数组
我正在做一个项目,要求我从一个图像数据文件中创建二维数组,然后根据值将这些数组排序为不同的格式 排序很容易,但是我遇到了一个问题,通过扫描文件来确定数组的大小 文件的数据格式如下:Java 如何从文本文件特定行中提供的值创建二维数组,java,arrays,multidimensional-array,java.util.scanner,Java,Arrays,Multidimensional Array,Java.util.scanner,我正在做一个项目,要求我从一个图像数据文件中创建二维数组,然后根据值将这些数组排序为不同的格式 排序很容易,但是我遇到了一个问题,通过扫描文件来确定数组的大小 文件的数据格式如下: 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 我需要使用第一行来设置数组的行和列,但是如果不扫描其余的数据,我就不知道如何进行设置。另一件事,我需要能够循环我的代码,这样一个具
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
我需要使用第一行来设置数组的行和列,但是如果不扫描其余的数据,我就不知道如何进行设置。另一件事,我需要能够循环我的代码,这样一个具有多个显示格式的数据集的文件可以被读取并放入数组中
以下是我到目前为止的想法:
publicstaticvoidmain(字符串[]args)引发IOException{
File File=新文件(“imagedata.txt”);
扫描仪sc=新扫描仪(文件);
int i=0;
int j=0;
int[][]数组=新的int[i][j];
while(sc.hasnetint()){
i=sc.nextInt();
j=sc.nextInt();
数组=数组[i][j];
sc.nextline();
}
}
虽然不多,但我已经放弃了很多其他的草稿,这些草稿让我一事无成。欢迎提供任何有用的建议。好的。所以这里的问题是由于2D数组的某个索引被一个新值一次又一次地替换。我的意思是:你有一个while循环。您已将变量j和i设置为0。但每次迭代while循环时,都会更改2D数组中的相同位置;因此,一切都不会改变。为了解决这个问题,我们可以使用前两个数字来详细说明2D数组的维度(在本例中为5x5)。然后,我们可以在嵌套for循环中使用这些维度,循环文件并将每个值存储到二维数组中 代码可能如下所示:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(new File("imagedata.txt"));
int r = scanner.nextInt();
int c = scanner.nextInt();
int [][] array = new int[r][c];
for(int row=0; row<array.length; row++) {
for(int col=0; col<array[row].length; col++) {
array[row][col] = scanner.nextInt();
}
}
for(int[] row : array) {
for(int num : row) {
System.out.print(num+" ");
}
System.out.println();
}
}
}
导入java.io.File;
导入java.io.IOException;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args)引发IOException{
Scanner Scanner=新扫描仪(新文件(“imagedata.txt”);
int r=scanner.nextInt();
int c=scanner.nextInt();
int[][]数组=新的int[r][c];
对于(int row=0;row)谢谢,这里有所有要打印的内容。
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(new File("imagedata.txt"));
int r = scanner.nextInt();
int c = scanner.nextInt();
scanner.nextLine();
String [][] array = new String[r][c];
for(int row=0; row<array.length; row++) {
array[row] = scanner.nextLine().split(" ");
}
for(String[] row : array) {
for(String str : row) {
System.out.print(str+" ");
}
System.out.println();
}
}
}