首页 > 解决方案 > 读取给定文件后创建和写入文本文件

问题描述

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

我已经完成了这个列表中的所有内容,并且我已经多次测试了我的代码。当我在将其写入文件之前打印它时,一切正常。但问题是,当使用 Fileoutputstream 和 Printwriter 时,我没有得到“report.txt”,并且程序一直说它没有产生任何输出。我也试过 File and 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);
        }
     }
    }
   }

标签: javafileoutputstreamprintwriter

解决方案


推荐阅读