2015-03-10 2 views
0

У меня есть назначение Java, и это объяснение В вашей программе создайте три класса: InputHandler, OutputHandler и классы учеников. Класс InputHandler обрабатывает чтение информации из входного файла. Он также содержит массив объектов Student для хранения информации в нем. Класс OutputHandler принимает массив студентов, предоставляемых с помощью метода в классе InputHandler. Затем он должен распечатать всю запись каждого ученика вместе с вычисленным средним значением в файле «results.txt». Он также должен рассчитать и распечатать стандартное отклонение. Наконец, класс Student содержит поля для хранения информации учащегося. Он также имеет метод, называемый getQuizAverage(), который вычисляет и возвращает среднее значение викторины для этого конкретного ученика, которое используется OutputHandler для печати в файле результатов.java повторить одну часть вывода

входного файла

input.txt:

99091; Mohammed; 7; 5,5; 7; 8; 9

99092; Халид; 7; 5,5; 7; 8; 8

99093; Али; 7; 5,5; 7; 8; 9

99094; Ахмад; 7; 5,5; 7; 8; 9

Output.txt

99091 Mohammed 7 5,5 7 8 9 7,3

99092 Халид 7 5,5 7 8 8 7,1

99093 Ali 7 5,5 7 8 9 7,3

99094 Ahmad 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 класса, студент, inputhandler, outputhandler, основные

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; 
    } 
} 

OutputHandler

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(); 

    } 
} 

Основная функция

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 Main { 



    public static void main(String[] args) throws IOException { 
     InputHandler ih=new InputHandler("input.txt"); 
     OutputHandler output1 = new OutputHandler(ih.getStudents()); 
     output1.writeData();  

    } 

} 
+0

Пожалуйста, отправьте короткий код, Как будто я читаю историю! Просто посмотрите на [mcve] (http://stackoverflow.com/help/mcve) –

+0

Добро пожаловать в StackOverflow, пожалуйста, обратитесь к [ask] - в текущем состоянии, непонятно, что вы пытаетесь спросить. – Aify

+0

Я, но проблема в жирных шрифтах, я не могу сказать немного о проблеме, потому что всегда здесь люди просят дать полное описание проблемы – student

ответ

2

Вы должны удалить цикл внутри класса InputHandler метода inputData. Потому что вы читаете информацию за строкой студента. Повторение снова неверно.Это должно быть так:

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(); 
    } 

} 
+0

, но если у меня нет цикла, как он будет читать всю информацию для другие ученики – student

+0

вы используете 'while()' для прокрутки строк – TeneCursum

+0

, как указано в @TeneCursum, вы уже читаете информацию об учениках по строкам. Линия чтения означает, что цикл. – emin

0

В заголовке ввода вы пытаетесь связать части одной линии со всеми объектами. Нужно также вводить строку в цикл.

+0

Можете ли вы дать мне короткий код, чтобы я мог понять, что вы имеете в виду – student

 Смежные вопросы

  • Нет связанных вопросов^_^