Java项目使用读取文件,写入文件和数组

人们

我的任务是即时通讯遇到了很多麻烦,并且确实需要一些帮助,iv到目前为止已经到了,但是现在停滞了,已经停滞了好几天。这是简短的。

修读非理性研究学位的第一年的学生需要两个模块:IR101和IR102。评估规则规定:学生必须通过两个模块才能进入第二阶段。一个模块的及格分数为40。未通过两个模块的学生将被视为未通过。只有两个模块之一不及格的学生将被允许重新尝试。两个模块均未通过的学生将被要求重读一年。通过这两个模块的学生将根据他们的总分,按照以下等级获得一个班级:70 – 100 1st 60 – 69.9 2.1 50 – 59.9 2.2 40 – 49.9 3rd该总分是两个模块分的平均值。以下文件中包含参加非理性研究的学生。

IRstudent.txt包括:25987艾伦25954贝蒂25654克里斯25622大卫25321艾尔西25220菲奥娜25212格雷格25218海伦25147伊恩25196吉姆

学生获得的分数包含在以下两个文件中。每行包含学生的ID号,后跟他们获得的分数(双精度)。(请注意,学生在三个文件中的显示顺序不同。)

IR101.txt包括:25220 68.3 25212 70.5 25218 62.1 25147 38.3 25196 52.0 25987 35.6 25954 70.2 25654 58.6 25622 65.0 25321 51.5

IR102.txt包括:25987 20.7 25954 63.4 25218 53.4 25147 47.5 25196 49.8 25654 35.1 25622 57.8 25321 45.6 25220 75.6 25212 72.5

您的任务是编写一个程序,该程序从这三个文件中读取信息,并以聚合标记的降序将成绩单列表输出到当前目录中的一个名为“ RankedList.txt”的文件中。笔录由三行组成:第1行:学生ID,后跟学生姓名。第2行:两个模块标记,后跟聚合标记标记应在小数点后显示一位数字。第3行:课程和结果。类别应为Fail,3rd,2.1、2.2或1st。结果应为“重复年”,“重新参加指定的考试”或“进入阶段2”。在成绩单列表中,每个成绩单应以“-”行分隔。以下是从此类列表中摘录的示例:

37695亚里斯多德IR101 52.0 IR102 49.8总计50.9等级:2.2结果:进入第2阶段

37622苏格拉底IR101 38.3 IR102 47.5总和42.9等级:失败结果:Resit IR101

您可以假定输入文件中没有错误。

现在,iv可以打开文件并读取它们了,但是从那以后就被卡住了。到目前为止,这是我的代码。

import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;


public class Task2 {

public Scanner input;
int reg;
double ir101,ir102l;
double aggregate;
String student_name;
ArrayList<Student> students = new ArrayList<Student>();

public void openIRstud()throws Exception{
    JFileChooser IRstudchooser = new JFileChooser();
    if(IRstudchooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile = IRstudchooser.getSelectedFile();
        input = new Scanner(inFile);
        System.out.println("IRstudents file read successfully.");
    }
}
public void openIR101()throws Exception{
    JFileChooser IR101chooser = new JFileChooser();
    if(IR101chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile = IR101chooser.getSelectedFile();
        input = new Scanner(inFile);
        System.out.println("IR101 file read successfully.");
    }
}
public void openIR102()throws Exception{
    JFileChooser IR102chooser = new JFileChooser();
    if(IR102chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile1 = IR102chooser.getSelectedFile();
        input = new Scanner(inFile1);
        System.out.println("IR102 file read successfully.");
    }
}
public void readIRstud (){
    while(input.hasNext()){
        String irstudid = input.next();
        String irname = input.next();
        System.out.printf(" %s %s\n", irstudid, irname);
    }
    System.out.println("Complete.");
}
public void readIR101 (){
    while(input.hasNext()){
        String ir101studid = input.next();
        String ir101mark = input.next();
        System.out.printf(" %s %s\n", ir101studid, ir101mark);
    }
    System.out.println("Complete.");
}
public void readIR102 (){
    while(input.hasNext()){
        String ir102studid = input.next();
        String ir102mark = input.next();
        System.out.printf(" %s %s\n", ir102studid, ir102mark);
    }
    System.out.println("Complete.");
}
public void Student(){
    while (input.hasNext()) {
        String line = input.nextLine();
        Student e = new Student();
        e.reg = Integer.parseInt(line.split(" ")[0]);
        e.ir101 = Double.parseDouble(line.split(" ")[1]);
        students.add(e);
    }
}
}

这是我的主要知识(到目前为止,这仅测试是否读取了文件,并且将其存储在一个数组中,我什至不确定是否可以正常工作)PS这是一个单独的类。

import java.io.IOException;


public class Task2test {
    public static void main(String[] args)throws Exception {
    Task2 r = new Task2();

    System.out.println("***** Marks Processing *****");
    System.out.println("Please select a file for IRstudents:");
    r.openIRstud();
    System.out.println("Now reading file IRstudents.");
    r.readIRstud();
    r.Student();

    System.out.println("Please select a file for IR101:");
    r.openIR101();
    System.out.println("Now reading IR101.");
    r.readIR101();
    r.Student();

    System.out.println("Please select a file for IR102:");
    r.openIR102();
    System.out.println("Now reading IR102.");
    r.readIR102();

}
}

我们将不胜感激,随时准备将我的头发拉出来!谢谢你!

艾丽尔·鲁本斯·达·罗莎(Elyel Rubens da Rosa)

您必须首先区分任务。

1-定义项目所需的类。

2-定义其功能。

3-读取IRstudent.txt文件并创建一个studests列表。

4-读取IR101.txt文件,并将标记与学生相关联。

5-阅读IR102.txt文件,并将标记与学生相关联。

6-为学生生成综合成绩和胜出成绩。

7-按总数标记学生。

8-创建一个新文件RankedList.txt以存储结果。

9-将学生信息写入此文件。

因此,让我们一步一步走。

1-定义项目所需的类。

班级学生。

  • idStudent

  • 姓名

  • 马克IR101

  • 马克IR102

  • 添加标记

类排名列表

  • 列表

  • 班级

  • 结果

2-定义其功能。

班级学生

  • 列表getStudentList(java.io.File irStudentsFile);
  • void setIR101Mark(java.io.File ir101File,List sudents);
  • void setIR102Mark(java.io.File ir102File,List sudents);

类排名列表

  • 列出学生;
  • addStudent(学生);
  • orderByAgregateMark();
  • writeToFile();

**步骤3、4、5、6 **

这是解决您的问题的代码示例,但是直到第6步我才做,现在我相信您有条件完成该项目。

   import java.io.File;
   import java.io.IOException;
   import java.math.BigDecimal;
   import java.math.BigInteger;
   import java.util.LinkedList;
   import java.util.List;
   import java.util.StringTokenizer;
   import java.util.function.Consumer;
   import java.util.logging.Level;
   import java.util.logging.Logger;
   import java.util.stream.Stream;

   public class Student {

private int idStudent;
private String name;
private BigDecimal ir101Mark;
private BigDecimal ir102Mark;
private BigDecimal agregateMark;

public int getIdStudent() {
    return idStudent;
}

public void setIdStudent(int idStudent) {
    this.idStudent = idStudent;
}

public String getName() {
    return name;
}

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

public BigDecimal getIr101Mark() {
    return ir101Mark;
}

public void setIr101Mark(BigDecimal ir101Mark) {
    this.ir101Mark = ir101Mark;
}

public BigDecimal getIr102Mark() {
    return ir102Mark;
}

public void setIr102Mark(BigDecimal ir102Mark) {
    this.ir102Mark = ir102Mark;
}

public BigDecimal getAgregateMark() {
    return agregateMark;
}

public void setAgregateMark(BigDecimal agregateMark) {
    this.agregateMark = agregateMark;
}

public static List<Student> getStudentList(java.io.File irStudentsFile){

    List<Student> students = new LinkedList<>();
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(irStudentsFile.toPath());
    } catch (IOException ex) {
        return null;
    }

    lines.forEach((Consumer<? super String>) line -> 
        {
            Student student = new Student();
            StringTokenizer sToken = new StringTokenizer(line, " ");
            student.setIdStudent(Integer.valueOf(sToken.nextToken()));
            student.setName(sToken.nextToken());

            students.add(student);
        } 

    );

    return students;
}

public static void setIR101Mark(java.io.File ir101File, List<Student> students){
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(ir101File.toPath());
    } catch (IOException ex) {
        return;
    }

    lines.forEach((Consumer<? super String>) new Consumer<String>() {

        @Override
        public void accept(String line) {
            Student student = null;
            StringTokenizer sToken = new StringTokenizer(line, " ");
            int idStudent = Integer.valueOf(sToken.nextToken());

            for (Student student1 : students) {
                if (student1.getIdStudent() == idStudent) {
                    student = student1;
                }
            }

            if (student == null) {
                return;
            }

            student.setIr101Mark(BigDecimal.valueOf(Double.valueOf(sToken.nextToken())));
        }
    }
    );
}

public static void setIR102Mark(java.io.File ir102File, List<Student> students){
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(ir102File.toPath());
    } catch (IOException ex) {
        return;
    }

    lines.forEach((Consumer<? super String>) new Consumer<String>() {

        @Override
        public void accept(String line) {
            Student student = null;
            StringTokenizer sToken = new StringTokenizer(line, " ");
            int idStudent = Integer.valueOf(sToken.nextToken());

            for (Student student1 : students) {
                if (student1.getIdStudent() == idStudent) {
                    student = student1;
                }
            }

            if (student == null) {
                return;
            }

            student.setIr102Mark(BigDecimal.valueOf(Double.valueOf(sToken.nextToken())));
        }
    }
    );
}

public static void agregateMark(List<Student> students){
    students.forEach(student ->{
        BigDecimal agregate = 
                student.getIr101Mark()
                .add(student.getIr102Mark())
                .divide(BigDecimal.valueOf(Double.valueOf(2)));

        student.setAgregateMark(agregate);
    });
}

public static void main(String args[]){
    File irStudentFile = new File("D:\\IRstudent.txt");
    File ir101File = new File("D:\\IR101.txt");
    File ir102File = new File("D:\\IR102.txt");
    List<Student> students = Student.getStudentList(irStudentFile);
    Student.setIR101Mark(ir101File, students);
    Student.setIR102Mark(ir102File, students);
    Student.agregateMark(students);



    System.out.println("*** List of students ***");
    students.forEach(student -> {
        System.out.println("id: " + student.getIdStudent());
        System.out.println("Name: " + student.getName());
        System.out.println("IR 101 Mark: " + student.getIr101Mark());
        System.out.println("IR 102 Mark: " + student.getIr102Mark());
        System.out.println("Agregate Mark: " + student.getAgregateMark());
        System.out.println("----------------------------------------------");
    });
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用单独的线程在Java中读取和写入文件

来自分类Dev

使用文件流从文件读取/向文件写入无符号字符数组

来自分类Dev

Java使用ProccesBuilder写入文件

来自分类Dev

Java IO:读取仍在写入的文件

来自分类Dev

写入和读取文件

来自分类Dev

Java读取文件并写入数组

来自分类Dev

使用python从Windows读取/写入android文件

来自分类Dev

在Java中读取/写入文件中的整数

来自分类Dev

使用fast-csv从文件读取并写入数组

来自分类Dev

写入后读取文件

来自分类Dev

Perl读取文件和数组并找到常用词

来自分类Dev

无法使用Java写入文件

来自分类Dev

从文件写入/读取对象

来自分类Dev

PHP文件和数组

来自分类Dev

如何使用WinAPI向文件写入和读取数组?

来自分类Dev

Java使用ProccesBuilder写入文件

来自分类Dev

如何使用缓冲读取器和缓冲写入器在Java中读取和写入文件

来自分类Dev

使用Java脚本从Linux FS中的文件写入/读取内容

来自分类Dev

使用Java中的openCSV从CSV文件读取并写入新的CSV文件

来自分类Dev

写入/读取小文件

来自分类Dev

读取和写入float数组到文件

来自分类Dev

从Java读取或写入Excel(xlsx)文件

来自分类Dev

如何使用Java读取文件并保存每个项目

来自分类Dev

如何使用sparkstreaming读取文件并使用Scala写入简单文件?

来自分类Dev

使用Java NIO读取和写入大文件

来自分类Dev

从 Web 读取图像并用 Java 写入文件

来自分类Dev

写入文件后读取文件

来自分类Dev

从 BufferReader 读取并写入文件

来自分类Dev

查找读取或写入的文件