从JAVA中的文本文件创建多个数组

时间:2018-05-01 04:10:54

标签: java arrays

我是一个低级程序设计类,我正在努力从文本文件中给出的数据创建数组。文件名是students.txt,格式如下:

1234

约瑟夫

3

4.0(除了单行间隔)

第一个数字(整数)是学生ID,后跟学生姓名,然后是学分,然后是GPA。这是一个当然的例子,该文件包含许多记录。

最后,我将创建一个按上述字段之一按顺序组织的记录。我需要帮助的是为每个字段创建多个数组。我认为如果我有一个student_ID数组,名字数组,credit_hour数组和gpa数组会非常有帮助。

这是我最好的拍摄和尝试:

/*
 * To change this license header, choose License Headers in Project     Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package filetoarray;
import java.util.*;
import java.io.*;

/**
 *
 * @author whitn
 */
public class FileToArray {

/**
 * @param args the command line arguments
 */
public static void main(String[] args)throws IOException {


   //Here I am establishing my arrays
   int[]student_ID;
   student_ID = new int[100];
   String[]name;
   name = new String[100];
   int[]credit_hour;
   credit_hour = new int[100];
   double[]gpa;
   gpa = new double[100];

   // I am not too sure what FileReader and BufferedReader do but I think 
   // I am creating a way for the program to read from the file students.txt
   FileReader fr = new FileReader ("C:\\Users\\whitn\\Desktop\\students.txt");
   BufferedReader snames = new BufferedReader(fr);


   //Here I am initializng my variables
   String name1 = " "; //called name1 to not confuse it with array 'name'
   String next = " ";
   int s_ID = 0;
   int c_hour = 0;
   double gpa1 = 0.0;

   //Now I don't really know how to proceed. Do use something like 
   // student_ID[x] = Integer.parseInt(next)
   // name[x] = snames.nextLn();
   // credit_hour[x] = snames.nextInt();
   // gpa[x] = snames.nextDouble();

   //Do I even need the variable initialized above?



}

}

我很确定如果我能弄清楚如何从文件中提供的字段创建数组我可以完成问题。任何帮助将不胜感激。我是第一个编程课程,并且不太了解,因此,如果我遗漏了有价值的信息,请告诉我!

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用bufferreader的readline方法逐行读取,这就是您以字符串形式选择一条记录的方法。 现在如果用空格或逗号分隔,你可以使用字符串方法拆分,它将通过索引返回一个字符串数组,你可以通过该字符串数组为你的所有变量赋值,或者你可以直接使用该数组的字符串

答案 1 :(得分:0)

创建一个类来读取文件内容,如

import java.io.*;

public class FileReader {

    private String fileName, fileContent = null, line;

    public FileReader(String f) {
        fileName = f;
        reader();
    }

    private void reader() {
        try {
            fileContent = "";
            // FileReader reads text files in the default encoding
            Reader fileReader = new java.io.FileReader(fileName);

            // Wrapping FileReader in BufferedReader
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            while ((line = bufferedReader.readLine()) != null) {
                fileContent += line;
                fileContent += '\n';
            }

            // Closing the file
            bufferedReader.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Unable to open file '" + fileName + "'");
        } catch (IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");
        }
    }

    /**
     * Get content of file
     * 
     * @return String
     */
    public String getFileContent() {
        return fileContent;
    }

}

为学生创建一个课程

public class Student {
    public String name;
    public int id, creditHour;
    public double gpa;

    // add constructor and setter/getter methods
}

使用main方法创建一个用于启动项目的类。从FileReader类获取文件内容。定义一组学生。遍历其内容并填充您的数组。