我在下面有一个构造函数,该构造函数从文本文件中读取并占用每一行,并将其分配给多维数组中的某个部分。
public ValueToArray(int rowsI, int columnsI, File fileLocationI){
int i;
int j;
InputStream fileInputStream;
BufferedReader bufferedReader;
String line;
rows = rowsI;
columns = columnsI;
count = 0;
fileLocation = fileLocationI;
array = new String[rows][columns];
try{
fileInputStream = new FileInputStream(fileLocation);
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, Charset.forName("UTF-8")));
for(i = 0; i < rows; i++){ // iterate through row
for(j = 0; j < columns; j++){ // iterate through column
while((line = bufferedReader.readLine())!= null){ // while the next line is not null
array[i][j] = line; // assign i-th j-th index as line (the input)
// System.out.println(array[i][j]);
count++;
}
}
}
bufferedReader.close();
}catch(Exception e){
e.printStackTrace();
}
}
我还写了一个打印出数组所有值的方法:
public void returnArray(){
for(int i = 0; i < rows; i++){ // iterate through row
for(int j = 0; j < columns; j++){ // iterate through column
System.out.println(array[i][j]);
}
}
}
这是我的问题:
如果我在构造函数的while循环内有
System.out.println(array[i][j]);
,则可以打印出所有值,但是,我的returnArray()
方法仅在第一个索引之后返回空值,即0,0,0
null
null
null
null
null
我想知道我的方法甚至构造函数有什么问题导致
nulls
?我的IDE似乎没有出现任何错误。 最佳答案
for(i = 0; i < rows; i++){ // iterate through row
for(j = 0; j < columns; j++){ // iterate through column
while((line = bufferedReader.readLine())!= null){ // while the next line is not null
array[i][j] = line; // assign i-th j-th index as line (the input)
// System.out.println(array[i][j]);
count++;
}
}
}
进入第二个for循环后,while循环将继续放置所有值并将其覆盖到array [0] [0]。因此,在第一个迭代本身中,将读取整个文件,文件的最后一行是您在[0] [0]处拥有的文件。之后,每次迭代都会跳过一段时间,因为文件中没有更多行。因此,它们都具有空值。