我在文件“array.txt”中有一个二维整数数组。我正在尝试读取二维数组中文件中的所有元素。我在复制时遇到问题。它显示了所有复制后值为“0”的元素,而不是它们的原始值。请帮我。 我的代码是:
import java.util.*;
import java.lang.*;
import java.io.*;
public class appMainNineSix {
/**
* @param args
*/
public static void main(String[] args)
throws java.io.FileNotFoundException{
// TODO Auto-generated method stub
Scanner input = new Scanner (new File("src/array.txt"));
int m = 3;
int n = 5;
int[][] a = new int [m][n];
while (input.next()!=null){
for (int i=0;i<m;i++){
for (int j=0;j<n;j++)
a[i][j]= input.nextInt();
}
}
//print the input matrix
System.out.println("The input sorted matrix is : ");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
System.out.println(a[i][j]);
}
}
}
最佳答案
while (input.next()!=null)
这将从扫描器输入流中消耗一些东西。相反,请尝试使用 while (input.hasNextInt())
根据您希望代码的健壮程度,您还应该在 for 循环内部检查是否有内容可供读取。
Scanner input = new Scanner (new File("src/array.txt"));
// pre-read in the number of rows/columns
int rows = 0;
int columns = 0;
while(input.hasNextLine())
{
++rows;
Scanner colReader = new Scanner(input.nextLine());
while(colReader.hasNextInt())
{
++columns;
}
}
int[][] a = new int[rows][columns];
input.close();
// read in the data
input = new Scanner(new File("src/array.txt"));
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < columns; ++j)
{
if(input.hasNextInt())
{
a[i][j] = input.nextInt();
}
}
}
使用 ArrayLists 的替代方法(无需预读):
// read in the data
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
Scanner input = new Scanner(new File("src/array.txt"));
while(input.hasNextLine())
{
Scanner colReader = new Scanner(input.nextLine());
ArrayList col = new ArrayList();
while(colReader.hasNextInt())
{
col.add(colReader.nextInt());
}
a.add(col);
}
关于java - 从文件中读取二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769976/