Java读取文件并写入数组
--------解决了------------ 我要感谢大家的帮助 我必须读取一个包含nxm元素的文件,然后将这些元素放入2D数组,然后打印出来。我在打印阵列时有点卡住了。在file.txt中,我有2x2=>2行2列,元素是:1 2 3 4 这是我的密码:Java读取文件并写入数组,java,file,parsing,multidimensional-array,Java,File,Parsing,Multidimensional Array,--------解决了------------ 我要感谢大家的帮助 我必须读取一个包含nxm元素的文件,然后将这些元素放入2D数组,然后打印出来。我在打印阵列时有点卡住了。在file.txt中,我有2x2=>2行2列,元素是:1 2 3 4 这是我的密码: public class ex_1 { public static void main(String args[]) { FileReader fr = new FileReader("FirstMat
public class ex_1
{
public static void main(String args[])
{
FileReader fr = new FileReader("FirstMatrix.txt");
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
String[] split = s.split("x");
int k=Integer.parseInt(split[0]);
int l=Integer.parseInt(split[1]);
System.out.println("Matrix dimensions: "+k+" lines, "+l+" columns si "+k*l+" elements");
System.out.print("Elements in matrix are: \n");
int[][] FirstMatrix = new int [k][l];
while ((s = br.readLine()) != null)
{
for(int i=0; i<FirstMatrix.length; i++)
for(int j=0; j<FirstMatrix[i].length;j++)
{
FirstMatrix[i][j] = Integer.parseInt(s);
System.out.println("FirstMatrix["+i+"]["+j+"]="+FirstMatrix[i][j]);
}
}
br.close();
我希望它是怎样的:
FirstMatrix[0][0]=1
FirstMatrix[0][1]=2
FirstMatrix[1][0]=3
FirstMatrix[1][1]=4
有人知道我怎样才能把这个打印出来吗
编辑!!
如果我像这样修改代码
int[][] FirstMatrix = new int [k][l];
while ((s = br.readLine()) != null)
{
for(int i=0; i<k;i++)
for(int j=0; j<l; j++)
{
FirstMatrix[i][j] = Integer.parseInt(s);
}
}
br.close();
for(int i=0; i<FirstMatrix.length; i++)
for(int j=0; j<FirstMatrix[i].length;j++)
{
System.out.println("FirstMatrix["+i+"]["+j+"]="+FirstMatrix[i][j]);
}
你做了n*n次循环。因为每次读取文件时都会进入循环。如果您知道每一行都是一个数字,那么您只能读取一次并打印每一行 试试看,让我知道会发生什么
墨西哥向您致以最诚挚的问候您正在做n*n次循环。因为每次读取文件时都会进入循环。如果您知道每一行都是一个数字,那么您只能读取一次并打印每一行 试试看,让我知道会发生什么 在这一行System.out.printElements之后,墨西哥向您致以最诚挚的问候:\ n; 粘贴此代码
int[][] FirstMatrix = new int [l][k];
for(int j=0; j<l;j++)
{
for(int i=0; i<k; i++) {
s = br.readLine());
FirstMatrix[j][i] = Integer.parseInt(s);
System.out.println("FirstMatrix["+j+"]["+i+"]="+FirstMatrix[j][i]);
}
}
不要使用while循环。在这一行之后,矩阵中的System.out.print元素是:\n;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ex_1 {
public static void main(String args[]) throws IOException {
FileReader fr = new FileReader("FirstMatrix.txt");
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
String[] split = s.split("x");
int k = Integer.parseInt(split[0]);
int l = Integer.parseInt(split[1]);
System.out.println("Matrix dimensions: " + k + " lines, " + l + " columns si " + k * l + " elements");
System.out.print("Elements in matrix are: \n");
int[][] FirstMatrix = new int[k][l];
for (int lineIndex = 0; lineIndex < k; lineIndex++) {
for (int columnIndex = 0; columnIndex < l; columnIndex++) {
s = br.readLine();
FirstMatrix[lineIndex][columnIndex] = Integer.valueOf(s);
}
}
for (int a = 0; a < k; a++) {
for (int b = 0; b < l; b++)
System.out.print(FirstMatrix[a][b] + " ");
System.out.println();
}
br.close();
}
}
粘贴此代码
int[][] FirstMatrix = new int [l][k];
for(int j=0; j<l;j++)
{
for(int i=0; i<k; i++) {
s = br.readLine());
FirstMatrix[j][i] = Integer.parseInt(s);
System.out.println("FirstMatrix["+j+"]["+i+"]="+FirstMatrix[j][i]);
}
}
不要使用while循环。请注意,对于每一行,您是如何在整个2D数组中进行双循环的。您希望按此顺序每次添加一个值0,0,0,1,1,0,1,1,即不需要循环。试着辨别模式。希望这有帮助。是的,你在这里说的有帮助。让我想想解决办法。感谢@RYUU9187没有循环,我得到了FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4请注意,对于每一行,您是如何在整个2D数组中进行双循环的。您希望按此顺序每次添加一个值0,0,0,1,1,0,1,1,即不需要循环。试着辨别模式。希望这有帮助。是的,你在这里说的有帮助。让我想想解决办法。谢谢@RYUU9187没有循环我得到第一矩阵[0][0]=1第一矩阵[0][0]=2第一矩阵[0][0]=3第一矩阵[0][0]=4谢谢你的回复,但现在我得到第一矩阵[0][0]=1第一矩阵[1][0]=1第一矩阵[0][0]=2第一矩阵[0][0]=3第一矩阵[1][0]=3第一矩阵[0]=4第一矩阵[1][0]=4谢谢你的回复,但是现在我得到了FirstMatrix[0][0]=1 FirstMatrix[1][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[1][0]=3 FirstMatrix[0][0]=4 FirstMatrix[1][0]=4Greetings@Daniel Azamar!它不会起作用的…:但是谢谢你的建议,我要重新考虑循环。你在做j*i次。你不需要那样做。尝试删除这两个,看看会发生什么!我删除了它们,但它不起作用,如果没有for循环,我得到FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4Ok。我得到了它。如果你试着独立使用计数器?我的意思是:I++,所以当I==2时,根据您的逻辑设置I=0,我现在会尝试,我会让您知道问候@Daniel Azamar!它不会起作用的…:但是谢谢你的建议,我要重新考虑循环。你在做j*i次。你不需要那样做。尝试删除这两个,看看会发生什么!我删除了它们,但它不起作用,如果没有for循环,我得到FirstMatrix[0][0]=1 FirstMatrix[0][0]=2 FirstMatrix[0][0]=3 FirstMatrix[0][0]=4Ok。我得到了它。如果你试着独立使用计数器?我的意思是:I++,所以当I==2时,根据您的逻辑设置I=0。我现在会尝试,我会让您知道的。谢谢您的代码,感谢您花时间为我构建这段代码。我的列表中的元素不是这样的1 2 3 4 5,是1\n 2\n 3\n 4如果你知道我的意思,元素排成一行。我试图将您的代码转换为我的代码,但无法工作…:我的朋友们:阿库玛和我的朋友们!感谢您的代码,感谢您花时间为我构建此代码。我的列表中的元素不是这样的1 2 3 4 5,是1\n 2\n 3\n 4如果你知道我的意思,元素排成一行。我试图将您的代码转换为我的代码,但无法工作…:我的朋友们:阿库玛和我的朋友们!
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ex_1 {
public static void main(String args[]) throws IOException {
FileReader fr = new FileReader("FirstMatrix.txt");
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
String[] split = s.split("x");
int k = Integer.parseInt(split[0]);
int l = Integer.parseInt(split[1]);
System.out.println("Matrix dimensions: " + k + " lines, " + l + " columns si " + k * l + " elements");
System.out.print("Elements in matrix are: \n");
int[][] FirstMatrix = new int[k][l];
for (int lineIndex = 0; lineIndex < k; lineIndex++) {
for (int columnIndex = 0; columnIndex < l; columnIndex++) {
s = br.readLine();
FirstMatrix[lineIndex][columnIndex] = Integer.valueOf(s);
}
}
for (int a = 0; a < k; a++) {
for (int b = 0; b < l; b++)
System.out.print(FirstMatrix[a][b] + " ");
System.out.println();
}
br.close();
}
}