我的任务是即时通讯遇到了很多麻烦,并且确实需要一些帮助,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();
}
}
我们将不胜感激,随时准备将我的头发拉出来!谢谢你!
您必须首先区分任务。
1-定义项目所需的类。
2-定义其功能。
3-读取IRstudent.txt文件并创建一个studests列表。
4-读取IR101.txt文件,并将标记与学生相关联。
5-阅读IR102.txt文件,并将标记与学生相关联。
6-为学生生成综合成绩和胜出成绩。
7-按总数标记学生。
8-创建一个新文件RankedList.txt以存储结果。
9-将学生信息写入此文件。
因此,让我们一步一步走。
1-定义项目所需的类。
班级学生。
idStudent
姓名
马克IR101
马克IR102
添加标记
类排名列表
列表
班级
结果
2-定义其功能。
班级学生
类排名列表
**步骤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] 删除。
我来说两句