java - 从文件中读取二维数组

标签 java

我在文件“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/

相关文章:

java - Primefaces LazyDataModel

java - Android, NDK, JNI, "cannot initialize a variable of type ' 长 *' with an rvalue of type ' jlong​​ *' "

java - JBoss Drools 从 DRL 插入事实

java - 在 Android 10 上阅读 PDF

java - ArrayList 的输出

java - while 循环内不会打印行

Java泛型函数

java - 使 Java JScrollpane 垂直滚动而不是水平滚动

java - Java访问二维数组的方法

java - Spring-boot micrometer timer() 它是如何工作的?