当前位置: 首页 > 知识库问答 >
问题:

我需要排序方面的帮助[关闭]

巫新知
2023-03-14

我想对我的文件内容进行排序。我的文件内容是学生姓名,他们的学生编号,他们的班级,他们的成绩。这些数据由“;”分隔。首先,我需要计算平均值和字母等级。我已经计算过了,但是我需要将所有内容写入另一个文件,顺序必须是最高等级到最低等级。我该怎么办?

Example of file content: Index;StdNo;Name;Surname;Average;Letter

Here is what I done by so far:

------------------------------------------------------------------------------------------
import java.util.*;
import java.io.*;
public class project3 {

    public static void main(String[] args) {
        File file= new File("Grades.csv");
        try {
            Scanner scan = new Scanner(file);
            String[] str= new String[16];
            StringTokenizer st;
            String[] index= new String[16];
            String[] stdNo= new String[16];
            String[] name= new String[16];
            String[] surname= new String[16];
            String[] classYear= new String[16];
            String[] midterm= new String[16];
            String[] project= new String[16];
            String[] finalExam= new String[16];
        while(scan.hasNextLine()) {
            for(int i=0; i<str.length;i++) {
                str[i]=scan.nextLine();
                st=new StringTokenizer(str[i],";");
                while(st.hasMoreTokens()) {
                    index[i]=st.nextToken();
                    stdNo[i]=st.nextToken();
                    name[i]=st.nextToken();
                    surname[i]=st.nextToken();
                    classYear[i]=st.nextToken();
                    midterm[i]=st.nextToken();
                    project[i]=st.nextToken();
                    finalExam[i]=st.nextToken();
                    
                }
                
            }
        
        }
        String[] average= new String[16];
        String[] letter= new String[16];
        
        for(int i=0;i<16;i++) {
            if(i==0) {
                average[i]="Average";
                letter[i]="Letter";
                continue;
            }
            
            average[i]=averageCalculator(midterm[i],project[i],finalExam[i]);
            letter[i]=letterCalculator(averageCalculator(midterm[i],project[i],finalExam[i]));
        }
        File f= new File("Letter.csv");
        try {
            PrintWriter pw=new PrintWriter(new FileOutputStream(f));
            for(int i=0;i<16;i++)
            pw.println(index[i]+";"+stdNo[i]+";"+name[i]+";"+surname[i]+";"+average[i]+";"+letter[i]);
            pw.close();
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
            
        }
        File f1=new File("Ordered.csv");
            PrintWriter pw2=new PrintWriter(new FileOutputStream(f1));
        Scanner sc= new Scanner(f);
        

            
            
            
            
            
            
                
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
            
        }
        
            
        
    }
public static String averageCalculator(String midterm, String project, String finalExam) {
    return Double.toString((Double.parseDouble(midterm)*0.3)+(Double.parseDouble(project)*0.3)+(Double.parseDouble(finalExam)*0.4));
}
public static String letterCalculator(String average) {
    String letter="FF";
    if((Double.parseDouble(average) >=90)&&(Double.parseDouble(average) <=100)) {
        letter="AA";
    }
    else if((Double.parseDouble(average) >=85)&&(Double.parseDouble(average) <=89)) {
        letter="BA";
    }
    else if((Double.parseDouble(average) >=75)&&(Double.parseDouble(average) <=84)) {
        letter="BB";
    }
    else if((Double.parseDouble(average) >=70)&&(Double.parseDouble(average) <=74)) {
        letter="CB";
    }
    else if((Double.parseDouble(average) >=60)&&(Double.parseDouble(average) <=69)) {
        letter="CC";
    }
    else if((Double.parseDouble(average) >=55)&&(Double.parseDouble(average) <=59)) {
        letter="DC";
    }
    else if((Double.parseDouble(average) >=50)&&(Double.parseDouble(average) <=54)) {
        letter="DD";
    }
    
    return letter;
}




}

共有1个答案

麹权
2023-03-14

创建一个类来为学生数据建模

public class Student {
  private String name;
  private String surname;
  ... etc ...
}

与其将数据读入数组,不如为每行构造一个学生,并将其添加到List中。因此,读取输入文件会导致List

List<Student> students = readInputsFile(getInputFile());
calculateStuff(students);
sortByGrade(students);
writeToFile(students, getOutputFile());

 类似资料:
  • 问题内容: 好吧,我可能也已在较早之前发布了此内容,但到目前为止仍找不到答案,因此请帮助我解决这个问题。 我的数据库结构: ATT (表) Act_ID(PK) Assigned_To_ID(FK,请参阅) Project_ID(FK,请参阅) Product_ID(FK,请参阅) 状态(可以是) 产品表 产品编号(PK) 产品名称 项目表 Project_ID(PK) 项目名 员工表 Emp_I

  • /**程序可以将十进制转换为二进制并报告是否使用了非法字符*程序不能将二进制转换为十进制*/import java.util.scanner; /***这个类包含一个完整的程序,只有一个main()方法,用于*将非负十进制整数(即以10为基数的整数)转换为*正二进制整数(即以2为基数的整数)。要*转换的值是从命令行读入的。*/public class BaseConversions2{public

  • 说明: 给定读取用户ID(直到-1)的main(),完成快速排序()和分区()方法,使用快速排序算法按升序对ID进行排序,并每行输出一个排序后的ID。 示例输入: 样本输出: 我运行并构建了我的代码,它没有显示任何错误,所以我猜我的方式有问题。输出仅按我输入的顺序显示字符串,但没有-1。 我的代码:

  • 在一个HTML文件中, 包含许多 ,而在另一个 中, 包含许多 。使用我需要的JavaScript,当我悬停在第一个上时,第一个 的背景颜色会发生变化,以此类推... 匿名用户 你的问题是如此令人困惑,提供一个屏幕截图或绘图表明你实际想要什么。

  • 然后,这需要转到数据库,该数据库向工作人员发送返回消息,告诉他们该成员已被添加。 只有工作人员在和系统通话,没有人。

  • 问题内容: 我正在尝试构建我的第一个Boost.Python示例。 编辑:正如@cdhowie所指出的,Python开发标头丢失了。我已经找到并包含了必需的头文件。现在链接器在抱怨: 我已经链接到-lpython3.3m -lboost_python-mt -lpython3.3-还有什么丢失的? 编辑:我想我已经链接到python3.3-config列出的所有内容。由于缺少符号,链接仍然不起作用