gpt4 book ai didi

java - 如何存储文件数据行并通过它的方法计算成字母并在另一个文件中打印字母等级?

转载 作者:行者123 更新时间:2023-12-02 00:59:32 24 4
gpt4 key购买 nike

类.txt

  • 瑞娜·萨姆,100、90、80、100,
  • 唐娜·D·巴托洛梅,90、90、100、100,
  • 克里斯·图伊,100、90、100、70,

我是java新手,我想弄清楚如何存储文件数据行以计算为字母并在另一个文件中打印字母等级?

我正在尝试存储到多个对象或 ArrayList 中......

像这样:

  • 瑞娜·萨姆:A
  • 唐娜·D·巴托洛梅:B
  • 克里斯·图伊:C

下面是我目前的进展,但我在尝试存储数据时陷入了困境。请帮忙...

...
class gradeMaker{
private Scanner readFile;
private String[] argument;
private ArrayList<String> list;
private String finalGrade ="";

gradeMaker(String [] arg) {
argument = arg;
}

void readStudentScores() {

File file = new File(argument[0]);
if (!file.exists()) {
System.out.println("Input file" + argument[0] + "does not exist");
System.exit(2);
}

try{ // Create a Scanner for the file
readFile = new Scanner(file);
ArrayList<Student> list = new ArrayList<>();

// Read data from a file
System.out.println("Read data from a file");
while (readFile.hasNextLine()) {
String temp = readFile.nextLine();

//list.add(new Student ()); //Stores Student student1 = new Student(Name2, 20, 28, 60,)
//Stores Student student2 = new Student(Name2, 20, 28, 60,)


System.out.println(temp);

//String[] studentInfo = line.split(",");


}

Collections.sort(list);
for (int i = list.size(); i >= 0; i++)
System.out.print(list.get(i) + " ");
System.out.println(list.toString());
// System.out.println();


}catch (IOException e) {
System.out.println("Error Reading from file:" + file + e.getMessage());

}


}


void computeGrade() {

int Q1 = quiz1;
int Q2 = quiz2;
int M1 = mid;
int FN = finals;

int finalScore = (Q1 * .20 + Q2 * .20 + M1 * .25 + FN * .35);
if (finalScore >= .9)
finalGrade = "A";
else if (finalScore >= .8 && finalScore <= .89 )
finalGrade = "B";
else if (finalScore >= .7 && finalScore <= .79 )
finalGrade = "C";
else if (finalScore >= .6 && finalScore <= .69 )
finalGrade = "D";
else if (finalScore <= .59 )
finalGrade = "F";
//}
}

void Grades() {
File outputFile = new File(argument[1]);
try {
PrintWriter output = new PrintWriter(outputFile);

while (readFile.hasNextLine()) {
output.println(finalGrade);
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}
}


}

最佳答案

这里有几件事。首先,我看到您有一个系统打印集来捕获集合排序中的未知错误。 printStackTrace 在那里会更有用。

此外,您的 PrintWriter 仅返回一个成绩。为了获得您想要的输出,您确实希望返回一个带有连接字符串的构造函数。您可以通过创建一个处理您需要返回的参数的类对象来完成此操作。像这样的东西:

String finalGrade = f.toString();

public gradeMarker(String name, String finalGrade) {
this.name = name;
this.finalGrade = finalGrade;
}

您的最终成绩为整数 (f),但我个人发现以字符串形式读取/写入数据更容易。您可以使用 getter 和 setter 方法来跟进此操作,然后放置一个返回所需输出的 final方法。类似的东西

public String toString() {
return name + "," + finalGrade;
}

然后,您可以将结果放入列表中,并使用 foreach 循环将其写入文件

List<gradeMaker> grade = FileReader(//your file)
PrintWriter output = new PrintWriter(//your file)
for (gradeMaker x : grade) {
output.println(x);
}

这将打印每一行,并且因为它是针对每一行的,所以只有当存在要打印的对象时才会持续。希望所有这些对您有所帮助!

关于java - 如何存储文件数据行并通过它的方法计算成字母并在另一个文件中打印字母等级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877127/

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