微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

读取给定文件后创建和写入文本文件

如何解决读取给定文件后创建和写入文本文件

给定的任务是创建一个程序:

  • 用户处读取 tsv 文件文件名。
  • 打开 tsv 文件并阅读学生信息。
  • 计算每个学生的平均考试成绩。
  • 根据平均考试成绩为每个学生分配一个字母等级。
  • 计算每次考试的平均值。
  • 将学生的姓氏、名字、考试成绩和字母等级输出到名为 report.txt 的文本文件中。
  • 每行输出一名学生并用制表符分隔值。
  • 在report.txt末尾输出每次考试的平均值,小数点后两位。

我已完成此列表中的所有内容,并且已多次测试我的代码。当我在将它写入文件之前打印它时,一切正常。但问题是,当使用 Fileoutputstream 和 Printwriter 时,我没有得到“report.txt”,并且程序一直说它没有产生任何输出。我也试过 File 和 Write 方法,但它仍然不起作用。在运行代码之前,我尝试创建和不创建实际的 report.txt 文件,但它仍然没有创建该死的文件。这让我疯狂。请帮忙!!!

这是我的代码

import java.util.Scanner;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.PrintWriter;  
import java.io.IOException;

public class LabProgram {   
  public static void main(String[] args) throws IOException {
  Scanner scnr = new Scanner(system.in);
  Scanner reader = null;
  FileInputStream fileByteStream = null;
  
  String fileName = scnr.next();
  fileByteStream = new FileInputStream(fileName);
  reader = new Scanner(fileByteStream);
  
  String lastName,firstName;
  int score1,score2,score3,individualAvg;
  int studentNum = 0;
  char grade;
  double midterm1,midterm2,midterm3;
  midterm1 = 0.0;
  midterm2 = 0.0;
  midterm3 = 0.0;
  
  FileOutputStream fileStream = null;
  PrintWriter outFS = null;
  
  fileStream = new FileOutputStream("report.txt");
  outFS = new PrintWriter(fileStream); 
 
  while (reader.hasNext()){
        lastName = reader.next();  
        firstName = reader.next();
        score1 = reader.nextInt();
        score2 = reader.nextInt();
        score3 = reader.nextInt();
        
        individualAvg = (score1 + score2 + score3)/3;
        if (individualAvg>=90){
           grade = 'A';  
        }
        else if (individualAvg>=80){
           grade = 'B';
        }
        else if (individualAvg>=70){
           grade = 'C';  
        }
        else if (individualAvg>=60){
           grade = 'D';  
        }
        else{
           grade = 'F';  
        }
        
        midterm1 += score1;
        midterm2 += score2;
        midterm3 += score3;
        studentNum += 1;
        
        outFS.println(lastName + "\t" + firstName + "\t" + score1 + "\t" + score2 + "\t" + score3 + "\t" + grade);
        if (!reader.hasNext()){
           outFS.println("");
           outFS.printf("Averages: Midterm1 %.2f,Midterm2 %.2f,Final %.2f\n",midterm1/studentNum,midterm2/studentNum,midterm3/studentNum);
        }
     }
    }
   }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。