简体   繁体   中英

How do I read from a text file into a 2 dimensional array in Java

I am trying to read a text file filled with numbers into a 2 dimensional integer array as can be seen in the read button in my code. I do not know what the problem is. Is my logic wrong? This is my first time trying to read into an array from a file. I need to be able to read 6 lines containing 10 numbers into my array. The text file contains this;

"1 1 3 3 0 0 1 1 0 3

1 1 1 0 0 3 3 3 3 0

1 0 0 0 1 1 3 0 0 3

1 3 1 3 3 3 0 0 1 1

3 0 1 3 1 1 1 1 1 1

0 3 1 0 3 0 0 3 3 0"

Code:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class GUI extends JFrame{

    private JPanel mainPanel,titlePanel, fieldPanel, buttonPanel;

    private JLabel title, teams, totalP, wlt;

    private JTextField team1, team2, team3, team4, team5, team6, total1, total2, total3, total4, total5, total6, wlt1, wlt2, wlt3, wlt4, wlt5, wlt6;

    private JButton read, calc, champWin, earthCW, exit;

    final private int WINDOW_HEIGHT = 400;
    final private int WINDOW_WIDTH = 900;

    public GUI(){

        buildtitlePanel();
        buildfieldPanel();
        buildbuttonPanel();
        buildmainPanel();

        setTitle("Desert Soccer League");
        setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    private void buildmainPanel() {

        mainPanel = new JPanel();

        mainPanel.setLayout(new BorderLayout());

        mainPanel.add(titlePanel, BorderLayout.NORTH);
        mainPanel.add(fieldPanel, BorderLayout.CENTER);
        mainPanel.add(buttonPanel, BorderLayout.SOUTH);

        add(mainPanel);

    }

    private void buildtitlePanel() {

        titlePanel = new JPanel();

        title = new JLabel();

        title.setText("2014 Desert Soccer League Totals");

        titlePanel.add(title);



    }

    private void buildfieldPanel() {

        fieldPanel = new JPanel();

        fieldPanel.setLayout(new GridLayout(7, 3));

        teams = new JLabel();
        teams.setText("Teams");

        totalP = new JLabel();
        totalP.setText("Total Points");

        wlt = new JLabel();
        wlt.setText("Win-Loss-Tie");

        team1 = new JTextField(10);
        team2 = new JTextField(10);
        team3 = new JTextField(10);
        team4 = new JTextField(10);
        team5 = new JTextField(10);
        team6 = new JTextField(10);

        total1 = new JTextField(10);
        total2 = new JTextField(10);
        total3 = new JTextField(10);
        total4 = new JTextField(10);
        total5 = new JTextField(10);
        total6 = new JTextField(10);

        wlt1 = new JTextField(10);
        wlt2 = new JTextField(10);
        wlt3 = new JTextField(10);
        wlt4 = new JTextField(10);
        wlt5 = new JTextField(10);
        wlt6 = new JTextField(10);

        team1.setEditable(false);
        team2.setEditable(false);
        team3.setEditable(false);
        team4.setEditable(false);
        team5.setEditable(false);
        team6.setEditable(false);

        total1.setEditable(false);
        total2.setEditable(false);
        total3.setEditable(false);
        total4.setEditable(false);
        total5.setEditable(false);
        total6.setEditable(false);

        wlt1.setEditable(false);
        wlt2.setEditable(false);
        wlt3.setEditable(false);
        wlt4.setEditable(false);
        wlt5.setEditable(false);
        wlt6.setEditable(false);

        fieldPanel.add(teams);
        fieldPanel.add(totalP);
        fieldPanel.add(wlt);

        fieldPanel.add(team1);
        fieldPanel.add(total1);
        fieldPanel.add(wlt1);

        fieldPanel.add(team2);
        fieldPanel.add(total2);
        fieldPanel.add(wlt2);

        fieldPanel.add(team3);
        fieldPanel.add(total3);
        fieldPanel.add(wlt3);

        fieldPanel.add(team4);
        fieldPanel.add(total4);
        fieldPanel.add(wlt4);

        fieldPanel.add(team5);
        fieldPanel.add(total5);
        fieldPanel.add(wlt5);

        fieldPanel.add(team6);
        fieldPanel.add(total6);
        fieldPanel.add(wlt6);

    }

    private void buildbuttonPanel() {

        buttonPanel = new JPanel();

        buttonPanel.setLayout(new GridLayout(1, 5));

        read = new JButton();
        calc = new JButton();
        champWin = new JButton();
        earthCW = new JButton();
        exit = new JButton();

        read.setText("Read Input File");
        read.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                int[][] points = null;

                File file = new File("/Downloads/Assignment4/in4.txt");

                try {
                    Scanner sc = new Scanner(file);

                    while(sc.hasNextLine()){
                        for(int i = 0; i<6; i++){
                            for(int j = 0; j<10;j++){
                                points[i][j] = sc.nextInt();
                                System.out.print(points[i][j]);
                            }
                        }
                    }
                    sc.close();
                } catch (FileNotFoundException e1) {
                    e1.printStackTrace();
                }








            }
        });

        calc.setText("Calculate Points");
        calc.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        champWin.setText("Championship Winner");
        champWin.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        earthCW.setText("Earth Cup Winner");
        earthCW.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        exit.setText("Exit");
        exit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        buttonPanel.add(read);
        buttonPanel.add(calc);
        buttonPanel.add(champWin);
        buttonPanel.add(earthCW);
        buttonPanel.add(exit);



    }


}

your filepath is wrong

/Downloads/Assignment4/in4.txt

try to use the full path of directory or absolute path.

sample: D://folder1//folder2//Downloads//Assignment4//in4.txt

in MAC : add the folder of the root user

File file = new File("//Users//Downloads//Assignment4//in4.txt");

If it didn't solve your problem:

Run as debugger and use breakpoint to check where it crashed

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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