Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java重复输出的一部分_Java_Eclipse_Io_Filereader_Java Io - Fatal编程技术网

java重复输出的一部分

java重复输出的一部分,java,eclipse,io,filereader,java-io,Java,Eclipse,Io,Filereader,Java Io,我有Java赋值,这是对 在程序中创建三个类:inputhHandler、outputhHandler和学生类。InputHandler类处理从输入文件读取信息。它还包含一个学生对象数组,用于存储其中的信息。OutputHandler类获取通过InputHandler类中的方法提供的学生数组。然后,它应该在'results.txt'文件中打印每个学生的全部记录以及计算出的平均值。还应计算并打印标准偏差。最后,学生类包含存储学生信息的字段。它还有一个名为getQuizAverage()的方法,该方

我有Java赋值,这是对 在程序中创建三个类:
inputhHandler
outputhHandler
和学生类。
InputHandler
类处理从输入文件读取信息。它还包含一个学生对象数组,用于存储其中的信息。
OutputHandler
类获取通过
InputHandler
类中的方法提供的学生数组。然后,它应该在'results.txt'文件中打印每个学生的全部记录以及计算出的平均值。还应计算并打印标准偏差。最后,学生类包含存储学生信息的字段。它还有一个名为getQuizAverage()的方法,该方法计算并返回特定学生的测验平均值,OutputHandler使用该平均值将其打印到结果文件中

输入文件

input.txt:

99091;穆罕默德;7.5.5;7.8.九,

99092;哈立德;7.5.5;7.8.八,

99093;阿里;7.5.5;7.8.九,

99094;艾哈迈德;7.5.5;7.8.九,

Output.txt

99091穆罕默德7 5.5 7 8 9 7.3

99092 Khalid 7 5.5 7 8 7.1

99093 Ali 7 5.5 7 8 9 7.3

99094艾哈迈德7 5.5 7 8 9 7.3

我只得到一个重复输出的问题

99094艾哈迈德7 5.5 7 8 9 7.3

99094艾哈迈德7 5.5 7 8 9 7.3

99094艾哈迈德7 5.5 7 8 9 7.3

99094艾哈迈德7 5.5 7 8 9 7.3

我的班级我有4个班级,学生,教师,教师,教师

public class Student {

    public String Name;
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        ID = iD;
    }
    public double getQuiz1() {
        return quiz1;
    }

    public void setQuiz1(double quiz1) {
        this.quiz1 = quiz1;
    }
    public double getQuiz2() {
        return quiz2;
    }
    public void setQuiz2(double quiz2) {
        this.quiz2 = quiz2;
    }

    public double getQuiz3() {
        return quiz3;
    }

    public void setQuiz3(double quiz3) {
        this.quiz3 = quiz3;
    }

    public double getQuiz4() {
        return quiz4;
    }

    public void setQuiz4(double quiz4) {
        this.quiz4 = quiz4;
    }

    public double getQuiz5() {
        return quiz5;
    }

    public void setQuiz5(double quiz5) {
        this.quiz5 = quiz5;
    }

    public double getAvgQuiz() {
        return avgQuiz;
    }

    public void setAvgQuiz(double avgQuiz) {
        this.avgQuiz = avgQuiz;
    }

    public  String ID;
    public double quiz1;
    public double quiz2;
    public double quiz3;
    public double quiz4;
    public double quiz5;

    public double avgQuiz;

    public double getQuizAverage()
    {
       return ((quiz1+quiz2+quiz3+quiz4+quiz5)/5);
    }

    public Student() {
        // TODO Auto-generated constructor stub
    }

}
InputHandler

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class InputHandler {

    Student[] myStudent = new Student[4];

    public InputHandler(String fileName) {
        this.inputData(fileName);
    }

    private void inputData(String fileName) {

        try {
            File file = new File(fileName);
            FileReader fileReader = new FileReader(file);

            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String line;


            while ((line = bufferedReader.readLine())!=null)
            {
            String[] parts = line.split(";");


                for(int i=0;i<4;i++)
                {

                    myStudent[i] = new Student();
                    myStudent[i].setID(parts[0]);
                    myStudent[i].setName(parts[1]);
                    myStudent[i].setQuiz1(Double.parseDouble(parts[2]));
                    myStudent[i].setQuiz2(Double.parseDouble(parts[3]));
                    myStudent[i].setQuiz3(Double.parseDouble(parts[4]));
                    myStudent[i].setQuiz4(Double.parseDouble(parts[5]));
                    myStudent[i].setQuiz5(Double.parseDouble(parts[6]));
                }     

        }


            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public Student [] getStudents() {
        return myStudent;
    }
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class OutputHandler {

    Student[] myStudent;

    public OutputHandler(Student[] stds) {

        myStudent = stds;
    }

    void writeData() throws IOException {
        FileWriter writt = new FileWriter("output.txt");

        for (int i = 0; i < 4; i++) {

            writt.write(myStudent[i].ID + '\t' + myStudent[i].Name + '\t'
                    + '\t' + myStudent[i].quiz1 + '\t' + myStudent[i].quiz2
                    + '\t' + myStudent[i].quiz3 + '\t' + myStudent[i].quiz4
                    + '\t' + myStudent[i].quiz5 + '\t'+"  "+myStudent[i].getQuizAverage());
            writt.write('\n');

        }

        writt.close();

    }
}

您应该删除InputHandler类inputData方法中的for循环。因为你逐行阅读学生信息。再次循环是错误的。应该是这样的

private void inputData(String fileName) {

    try {
        File file = new File(fileName);
        FileReader fileReader = new FileReader(file);

        BufferedReader bufferedReader = new BufferedReader(fileReader);

        String line;

        int studentIndex = 0;
        while ((line = bufferedReader.readLine())!=null)
        {
           String[] parts = line.split(";");
           myStudent[studentIndex] = new Student();
           myStudent[studentIndex].setID(parts[0]);
           myStudent[studentIndex].setName(parts[1]);
           myStudent[studentIndex].setQuiz1(Double.parseDouble(parts[2]));
           myStudent[studentIndex].setQuiz2(Double.parseDouble(parts[3]));
           myStudent[studentIndex].setQuiz3(Double.parseDouble(parts[4]));
           myStudent[studentIndex].setQuiz4(Double.parseDouble(parts[5]));
           myStudent[studentIndex].setQuiz5(Double.parseDouble(parts[6]));
           studentIndex++;

    }
        fileReader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

在输入标题中,您试图将同一行的部分链接到所有对象。也需要在循环中输入行。

请发布简短的代码,就像我在读故事一样!只要看看StackOverflow欢迎您,请参阅-在它的当前状态下,不清楚您想问什么。我用粗体字体回答了这个问题,关于这个问题,我不能说一点,因为这里的人总是要求我们对这个问题进行完整的描述,但是如果我没有一个循环,它将如何读取其他学生的所有信息。你正在使用
while()
通过指定的@TeneCursum行循环,你已经在逐行读取学生信息了。你能给我一个简短的代码让我明白你的意思吗
private void inputData(String fileName) {

    try {
        File file = new File(fileName);
        FileReader fileReader = new FileReader(file);

        BufferedReader bufferedReader = new BufferedReader(fileReader);

        String line;

        int studentIndex = 0;
        while ((line = bufferedReader.readLine())!=null)
        {
           String[] parts = line.split(";");
           myStudent[studentIndex] = new Student();
           myStudent[studentIndex].setID(parts[0]);
           myStudent[studentIndex].setName(parts[1]);
           myStudent[studentIndex].setQuiz1(Double.parseDouble(parts[2]));
           myStudent[studentIndex].setQuiz2(Double.parseDouble(parts[3]));
           myStudent[studentIndex].setQuiz3(Double.parseDouble(parts[4]));
           myStudent[studentIndex].setQuiz4(Double.parseDouble(parts[5]));
           myStudent[studentIndex].setQuiz5(Double.parseDouble(parts[6]));
           studentIndex++;

    }
        fileReader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}