Java 从txt文件读取、排序并输出到另一个txt文件
我希望有人能抽出时间来帮助我。我是Java新手,正在参加一个课程来尝试和学习它。我有一个作业,我已经开始并删除了大概30次。我就是不喜欢这个。任务如下: 从txt文件中读取3列整数。一列为学生编号,一列为作业分数,第三列为该作业的最大可能分数。有5名学生,每人10分 我必须使用至少1个数组 列出从作业中获得的总分,并对10项作业中的5名学生中的每名学生的最高分进行合计。然后将学生编号、分数、作业的最大可能分数、分数百分比,最后将学生字母分数输出到另一个txt文件 txt文件如下所示:Java 从txt文件读取、排序并输出到另一个txt文件,java,Java,我希望有人能抽出时间来帮助我。我是Java新手,正在参加一个课程来尝试和学习它。我有一个作业,我已经开始并删除了大概30次。我就是不喜欢这个。任务如下: 从txt文件中读取3列整数。一列为学生编号,一列为作业分数,第三列为该作业的最大可能分数。有5名学生,每人10分 我必须使用至少1个数组 列出从作业中获得的总分,并对10项作业中的5名学生中的每名学生的最高分进行合计。然后将学生编号、分数、作业的最大可能分数、分数百分比,最后将学生字母分数输出到另一个txt文件 txt文件如下所示: 12345
12345 10 15
12345 25 25
12345 89 100
12345 23 25
12345 9 10
12345 42 50
12345 75 100
12345 92 100
12345 40 50
12345 48 50
23456 12 15
23456 23 25
23456 99 100
23456 24 25
23456 9 10
23456 47 50
23456 88 100
23456 95 100
23456 35 50
23456 45 50
34567 10 15
34567 24 25
34567 87 100
34567 23 25
34567 9 10
34567 45 50
34567 97 100
34567 98 100
34567 38 50
34567 48 50
45678 8 15
45678 21 25
45678 78 100
45678 22 25
45678 9 10
45678 46 50
45678 76 100
45678 92 100
45678 37 50
45678 39 50
56789 8 15
56789 21 25
56789 78 100
56789 21 25
56789 8 10
56789 42 50
56789 72 100
56789 88 100
56789 32 50
56789 34 50
这就是我到目前为止所做的:
import java.awt.List;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.IOException;
public class gradesSummary {
public static void main(String[] args) throws FileNotFoundException {
ArrayList<Integer> l1 = new ArrayList<Integer>(1);
ArrayList<Integer> l2 = new ArrayList<Integer>(2);
ArrayList<Integer> l3 = new ArrayList<Integer>(3);
Scanner s = new Scanner(new FileReader("grades.txt"));
while (s.hasNext()) {
l1.add(s.nextInt());
l2.add(s.nextInt());
l3.add(s.nextInt());
}
s.close();
System.out.println(l1);
System.out.println(l2);
System.out.println(l3);
}
}
我该怎么办
我已经完成了大部分代码。我现在需要打印到一个新的文本文件。这是我的新代码:
公开课成绩汇总表{
公共静态无效主字符串[]args引发FileNotFoundException{
int x = 1;
Scanner inputFile = new Scanner(new File("grades.txt"));
int[] studentNum = new int[100];
int[] score = new int[100];
int[] maxScore = new int[100];
int[] totalScore = new int[6];
int[] totalMaxScore = new int[6];
int[] studentNumber = new int[6];
double[] percentage = new double[6];
//int[] totalScore = new int[100];
//int[] totalMaxScore = new int[100];
//int totalMaxScore = 0;
//int totalScore = 0;
//double percentage = 0.00;
studentNum[0] = 0;
while(inputFile.hasNext()){
studentNum[x] = inputFile.nextInt();
score[x] = inputFile.nextInt();
maxScore[x] = inputFile.nextInt();
x++;
}
int y = 0;
studentNumber[y] = studentNum[1];
for (x = 1; x < 100; x++){
if (x > 1 && studentNum[x] != studentNum[x-1]){
percentage[y] = (double)totalScore[y] / (double)totalMaxScore[y];
y++;
studentNumber[y] = studentNum[x];
}
totalMaxScore[y] += maxScore[x];
totalScore[y] += score[x];
}
for (int z = 0; z<= 4; z++){
System.out.println(z + " " +studentNumber[z]+" "+percentage[z]);
}
}
}
//inputFile.close
对于创建新的文本文件以打印studentNum、totalscore、totalmaxscore、百分比分数和字母分数,您有什么建议吗
感谢您提供的帮助。OOP方法是创建一个学生类,具有int id和作业分数数组。请注意,每个学生以相同的顺序接收相同的作业,因此您可以创建一个包含10个最高分数的数组并存储总和。这样做 你的数据
ArrayList<Integer[]> list = new ArrayList<Integer[]>();
Scanner s = new Scanner(new FileReader("grades.txt"));
while (s.hasNext()) {
Integer[] array= new Integer[3];
array[0]=s.nextInt();
array[1]=s.nextInt();
array[2]=s.nextInt();
list.add(array);
}
s.close();
如果你要求别人为你编写代码,这可能会破坏你的学习过程。网上有很多很好的教程,先学习并做几个例子,然后再回到这个例子,并尝试解决问题,如果你仍然遇到任何问题,那么只需复制粘贴你的错误信息,肯定有人会在这方面帮助你,是吗至少要有一个算法来解决这个问题?谢谢。你会推荐一个特别的教程吗?我已经做了这么多,但需要指导如何将它写入一个新的文本文件。这是我的新代码:非常感谢你的帮助。
class SimpleComparator implements Comparator<Integer[]> {
@Override
public int compare(Integer[] o1, Integer[] o2) {
if(!o1[0].equals(o2[0])){
return o1[0].compareTo(o2[0]);
}
if(!o1[1].equals(o2[1])){
return o1[1].compareTo(o2[1]);
}
if(!o1[2].equals(o2[2])){
return o1[2].compareTo(o2[2]);
}
return 0;
}
}
Collections.sort(list,new SimpleComparator());