使用数组实现文件读取和类

时间:2016-02-24 06:01:16

标签: java arrays file filereader

我今天在这里,因为我现在需要帮助一些代码来介绍我的Java课程。

基本上我必须读取一个.txt文件,并将.txt文件中的每一行设置为一个名为Student的新Class对象,该对象只有一个名称和一个测验或测试的分数或其他。基本上.txt文件如下:

James 78
Jerry 90
Henry 95
Juice 63
Alex 88
Nick 83

我知道如何阅读该文件,但不知道如何为文本文件中的每一行创建新学生。一旦完成,我必须使用我的Student课程中的Getters和Setters来获取每个学生的分数值并将它们放入一个数组中,这样我就可以将数组实现到我的Lab7中Bubble对数组进行排序的方法。

我的代码如下:

我的Student班级:

public class Student {
    private String name;
    private int score;

    public Student(String name, int score){
        this.name = name;
        this.score = score;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

}

我的主要是我需要帮助的地方:

import java.io.*;
import java.util.Arrays;

public class Lab7 {

public static void main(String[] args) {

    //fileName differs per location of the file
    String fileName = "/Users/Gerard/Desktop/scores.txt";

    String line = null;

    try {
        FileReader fileReader = new FileReader(fileName);

        BufferedReader bufferedReader = new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null){
            System.out.println(line);
        }   
        bufferedReader.close();         
    }
    catch(FileNotFoundException ex){
        System.out.println("Unable to open file '" + fileName + "'");                
    }
    catch(IOException ex){
        System.out.println("Error reading file '" + fileName + "'");                  

    }
}

//Code that Gets Value of scores using getters and setters from student class 
//and stores them into an array to be used for Lab7 which bubble sorts the array.


public int[] Lab7(int[] arr){
    int val;
    for(int i = 0; i < arr.length-1;i++){
        for(int j = 0; j < arr.length-1;j++){
            if(arr[j-i] > arr[j]){
                val = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = val;   
            }
        }
        System.out.println("Run "+ (i+1) + Arrays.toString(arr));
        }
    }
}

2 个答案:

答案 0 :(得分:0)

所以你需要做的就是每次读取一行然后放入数组中的位置时创建一个Student类型的新对象。像

这样的东西
Student s = new Student();
Student[] sArray = new Student[5];
sArray[0] = s;

答案 1 :(得分:0)

尝试以下代码。它将为您提供学生阵列中的学生对象。您可以使用student对象中的值传递给排序方法。

处理空指针和ArrayIndexOutOfBound异常。

public static void main(String [] args){

//fileName differs per location of the file
String fileName = "/Users/Gerard/Desktop/scores.txt";

String line = null;

try {
    FileReader fileReader = new FileReader(fileName);

    BufferedReader bufferedReader = new BufferedReader(fileReader);

    Student[] studentArr = new Student[6];

    int counter = 0;

    while((line = bufferedReader.readLine()) != null){
        System.out.println(line);
        String[] arr = line.split(" ");
        Student student = new Student(arr[0], Integer.parseInt(arr[1]));

        studentArr[counter] = student;
        counter++;

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

}

}