繁体   English   中英

如何在 java 中将 a.txt 文件读入二维数组?

[英]How do I read a .txt file into a 2D array in java?

我无法弄清楚我的程序有什么问题。 我想将一个名为“salesReport”的.txt 文件读取到一个二维数组中,但它只读取一行。

二维数组有 10 行和 12 列,我还需要帮助安排数组,当它被打印时,在 10 行和 12 列之间有 3 个空格。

我的文本文件

31
74
22
05
61
84
14
86
55
22
09
81
83
91
23
49
96
45
41
45
26
77
77
19
84
03
65
91
31
62
73
92
49
93
43
36
69
05
96
54
59
84
14
16
49
35
28
51
60
98
42
61
59
40
01
98
85
80
90
20
22
43
54
71
47
35
81
86
04
61
60
34
35
08
14
44
90
51
27
50
73
53
75
52
19
72
86
41
17
04
46
11
45
25
21
66
96
48
98
06
61
38
11
96
19
63
32
03
11
30
84
80
17
73
90
40
69
55
90
92

我的代码

import java.util.Scanner;  // Needed for the Scanner class
import java.io.*;  // Needed for the File class

public class salesReport
{
   public static void main(String[] args) throws IOException
   {
     
   // Create a Scanner object to read input.
      Scanner keyboard = new Scanner(System.in);
      
      int[] A;
      int[][] B;
      int i=11,j=13;
      
      A = arrayFile(121);
      
      System.out.println(A);
      
      B = showArray(i,j,A);
     
   }
   
   public static int[] arrayFile(int a) throws IOException
   {
   // Create a Scanner object to read input.
      Scanner keyboard = new Scanner(System.in);
      
      int A[];
      A = new int[a];
   
      System.out.print("Enter the filename: ");
      String filename = keyboard.nextLine();
   
      File file = new File(filename);
      Scanner inputFile = new Scanner(file);
      
      int i=0;
   
      while (inputFile.hasNextLine())
      {
         i++;
         A[i] = inputFile.nextInt();
      }
      return A;
   }
   
   public static int[][] showArray(int i,int j,int[] C) throws IOException
   {
   // Create a Scanner object to read input.
      Scanner keyboard = new Scanner(System.in);
      
      int[][] A;
      
      A = new int[i][j];
      
      for (int row = 0;row < A.length;row++)
      {
         for (int col = 0;col < A[row].length;col++)
         {
            System.out.print(A[row][col] + " ");
            System.out.println();
         }       
      }
      return A;
   }
    
}

这是我的尝试。 我在一行中的每个元素之间放置了三个空格,在列之间放置了三个空格。

编辑:更改打印方法以避免使用 Streams API。

// Needed for the File class
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner; // Needed for the Scanner class

public class Read2D {
    public static void main(String[] args) throws IOException {
        int rows = 10;
        int columns = 12;

        int[] arr = arrayFile(rows * columns);
    
        int[][] md_arr = new int[rows][columns];

        for(int r=0; r < rows; r++) {
            for(int c=0; c<columns; c++) {
            md_arr[r][c] = arr[r*c+c];
            }
        }
    
        showArray(md_arr);

    }

    public static int[] arrayFile(int a) throws IOException {
        // Create a Scanner object to read input.
        Scanner keyboard = new Scanner(System.in);

        int A[];
        A = new int[a];

        System.out.print("Enter the filename: ");
        String filename = keyboard.nextLine();
        keyboard.close();

        File file = new File(filename);
        Scanner inputFile = new Scanner(file);

        int i = 0;

        while (inputFile.hasNextLine()) {
            A[i] = inputFile.nextInt();
            i++;
        }
        inputFile.close();

        return A;
    }

    public static void showArray(int[][] C) {
        for(int r=0; r < C.length; r++) {
            for(int c=0; c<C[r].length; c++) {
                System.out.print(C[r][c]+"   ");
            }
                System.out.print("\n\n\n");
        }
    
    }

}

Output:

31   74   22   5   61   84   14   86   55   22   9   81   


31   22   61   14   55   9   83   23   96   41   26   77   


31   5   14   22   83   49   41   77   84   91   73   93   


31   61   55   83   96   26   84   31   49   69   59   49   


31   84   9   49   26   3   73   36   59   35   42   98   


31   14   83   41   84   73   69   14   60   1   22   81   


31   86   23   77   31   36   14   98   85   71   60   51   


31   55   96   84   49   59   60   85   47   35   73   17   


31   22   41   91   69   35   1   71   35   53   46   6   


31   9   26   73   59   42   22   60   73   46   61   84 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM