Java 从由数字组成的字符串中逐个提取每个数字
我有一个文件,这个文件有x*y数字,比如12行21列 从一个外部文件,它是这样的Java 从由数字组成的字符串中逐个提取每个数字,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我有一个文件,这个文件有x*y数字,比如12行21列 从一个外部文件,它是这样的 BufferedReader jack = new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768); //StringBuilder comfy = new StringBuilder(); String line = null; while ((jack.readLine())
BufferedReader jack =
new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);
//StringBuilder comfy = new StringBuilder();
String line = null;
while ((jack.readLine()) != null) {
line = jack.readLine();
}
//System.out.println(comfy.toString());
String[] strs = line.trim().split("\\s+");
for (int fes=0;fes<511;fes++) {
System.out.println("this is fes"+ Integer.parseInt(strs[fes]));
}
System.out.println("this is strs " );
for (int i = 0; i < size; i++) {
for (int j = 0; j < size2; j++) {
//System.out.println(jack.read());
arr[i][j] = Integer.parseInt(strs[j]);
//System.out.println("this is reader "+arr[i][j] + " "+ i +" " + j);
}
}
}
BufferedReader插孔=
新的BufferedReader(新的文件阅读器(“/root/Desktop/woop.txt”)、32768;
//StringBuilder comfy=新的StringBuilder();
字符串行=null;
while((jack.readLine())!=null){
line=jack.readLine();
}
//System.out.println(comfy.toString());
字符串[]strs=line.trim().split(\\s+);
对于(int-fes=0;fes而言,问题在于您仅使用j
获取要解析的字符串,因此基本上将数组的第一行复制到所有其他行
您需要考虑您应该在的行中,计算输入数组中位置的公式将是
(row number) * (length of one row) + (offset in row)
或者在您的特定情况下,您希望将parseInt(strs[j])
替换为parseInt(strs[i*size2+j])
您遇到的问题是,您正在while循环中读取整个文件,但只保存最后一行
读取一行并继续,您希望在执行while条件检查时注意不要丢失该行。如果您在阅读时处理每行,您将有一个更轻松的时间。它可能看起来像这样:
BufferedReader jack =
new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);
String line = jack.readLine();
int rowNum = 0;
while (line != null) {
String[] strs = line.trim().split("\\s+");
int colNum = 0;
for (String s : strs){
arr[rowNum][colNum]=Integer.parseInt(s);
colNum++;
}
line = jack.readLine();
rowNum++;
}
}
你能澄清一下你的具体问题是什么吗?我试图在某一行和某一列中插入数字,但它在第一行和第列之后不断重复,也不应该是line=be line+=?@JeremyKahan是的,你是对的,我完全忽略了两件事,第一件是哪一行,第二件是如果我将它改为I*size2+j indexoutofbounds错误发生