【发布时间】:2015-04-05 16:47:49
【问题描述】:
我有一个任务,我遇到了很多麻烦,真的需要一些帮助,我已经完成了,但现在卡住了,已经卡了好几天了。这是简介。
非理性研究学位第一年的学生学习两个模块:IR101 和 IR102。评估规则规定如下: 学生必须通过两个模块才能进入第 2 阶段。 一个模块的及格分数是 40。 未通过两个模块的学生将被视为不及格。 仅通过两个模块之一的学生将被允许重考。 两个模块都未通过的学生将被要求重复这一年。 通过这两个模块的学生将根据他们的总分获得一个班级,使用以下等级: 70 – 100 第一 60 – 69.9 2.1 50 – 59.9 2.2 40 – 49.9 第三 总分是两个模块分的平均值 参加非理性研究的学生名单包含在以下文件中。文件的每一行都包含一个学生 ID 号(一个整数),后跟学生的姓名(一个字符串)。
IRstudent.txt 包括: 25987艾伦 25954 贝蒂 25654 克里斯 25622 大卫 25321 艾尔西 25220 菲奥娜 25212 格雷格 25218 海伦 25147 伊恩 25196 吉姆
学生获得的分数包含在以下两个文件中。每行包含学生的身份证号码,后跟他们获得的分数(双)。 (注意学生在三个文件中出现的顺序并不相同。)
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 班级:失败结果:重考 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);
}
}
}
这是我的主要内容(到目前为止,这仅测试文件是否被读取,并且它存储在一个数组中,我什至不确定这是否有效)P.S 这是一个单独的类。
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();
}
}
任何帮助完成此任务将不胜感激,我已经准备好拔掉我的头发了!谢谢!
【问题讨论】:
-
不过,我不完全确定您要问的是什么。我可以看到你被卡住了;这就是你问这个问题的原因。但是您遇到的具体问题是什么?
-
只是知道在点之后该做什么,我不确定如何处理数组等。