gpt4 book ai didi

java - Java任务中的文件IO

转载 作者:行者123 更新时间:2023-12-01 11:12:03 26 4
gpt4 key购买 nike

它被称为“分数处理”,基本上我的任务是编写一个程序,从三个文件中读取信息并输出每个学生的结果列表,按总分数的降序排列。

我已经保存了 3 个文件,第一个文件包含学生姓名和 ID,接下来的两个文件包含类(class)作业和考试分数。每个学生的输出应包含两行:
第 1 行:学生 ID,后跟学生姓名
第 2 行:每个模块的类(class)作业、考试和总分,然后是总分

标记应显示小数点后一位数字。

在列表中,每个学生的成绩应以一行“-”分隔。我有一些代码可以完成这项工作,但无法找到该文件,即使文件都保存在我的桌面上。

我的代码在这里:

 import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

class Student implements Comparable {
String name;
int id;
double ab101mark;
double ab102mark;
double aggregate;

public Student(String name, int id) {
this.name = name;
this.id = id;
}

public int compareTo(Object obj) {
return (int)(((Student)obj).aggregate - this.aggregate);
}

public void setAggregate() {
aggregate = (ab101mark + ab102mark)/2;
}

public void printTranscript(PrintWriter destination) {
destination.println(id + "\t " + name);
destination.printf("AB101\t %4.1f\t AB102\t %4.1f\t Aggregate %4.1f\n", ab101mark, ab102mark, aggregate);
destination.println("----------------------------------------------------");
}
}
public class MarksProcessor {

private static Student findStudent(int idnum, ArrayList<Student> clist) {
for (Student s : clist) {
if (s.id == idnum) return s;
}
return null;
}

public static void main(String[] args) throws Exception {
ArrayList<Student> classList = new ArrayList<Student>();
File inFile = new File("C:/Users/mobin/Desktop/ABStudents.txt");
Scanner input = new Scanner(inFile);
while (input.hasNext()) {
int id = input.nextInt();
String name = input.next();
Student s = new Student(name, id);
classList.add(s);

}
input.close();

inFile = new File("C:/Users/mobin/Desktop/AB101.txt");
input = new Scanner(inFile);
while (input.hasNext()) {
int id = input.nextInt();
double mark = input.nextDouble();
Student s = findStudent(id, classList);
s.ab101mark = mark;

}

input.close();

inFile = new File("C:/Users/mobin/Desktop/AB102.txt");
input = new Scanner(inFile);
while (input.hasNext()) {
int id = input.nextInt();
double mark = input.nextDouble();
Student s = findStudent(id, classList);
s.ab102mark = mark;

}
input.close();
for (Student s : classList) {
s.setAggregate();
}

File outFile = new File("ABRankedList.txt");
PrintWriter output = new PrintWriter(outFile);
for (Student s : classList) s.printTranscript(output);
output.close();
}

}

在列表中,每个学生的成绩应以一行“-”分隔。输出应如下所示:

------------------------------------------------------------

14321 伊丽莎白

AB101:80.2 70.4 73.3 AB102:75.2 70.4 72.3 总分:72.8

<小时/>

14654 查理

AB101:85.4 60.2 67.8 AB102:80.4 65.2 71.3 总分:69.5

最佳答案

我怀疑问题是文件保存在桌面上并且代码在不同的目录中运行,因此文件不在代码的类路径中。这就是 Java 找不到它们的原因。

如果您将传递给 new File() 的路径名更改为文件的绝对路径,我相信它会起作用。

关于java - Java任务中的文件IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com