2014-01-05 1 views
-4

이 코드는 학생과 그 점수로 파일을 만듭니다. 편지 등급을 계산했지만 콘솔에 표시됩니다. 편지 등급을 새 파일로 가져 오려면 어떻게해야합니까? 또한 내가 지금 for 루프를 모두 가지고 있기 때문에 어떻게 각 테스트/퀴즈에 대한 평균을 콘솔에 인쇄 할 수 있습니까?이 문자 등급을 콘솔에 올려 놓지 않고 새 파일에 넣으려면 어떻게해야합니까?

import java.io.*; 
import java.util.InputMismatchException; 
import java.lang.*; 
import java.util.*; 
public class ReadFile { 

private Scanner x; 

    public void openFile(){ 
     try{ 
      x = new Scanner (new File ("grades.txt")); 
     } 
     catch(Exception e){ 
      System.out.println("could not find file"); 
     }} 



    public void createFile()throws IOException { 


     try{ 
      File file = new File("grades.txt"); 
      Scanner s = new Scanner(file); 




     while(s.hasNext()){ 
     { 
      String [] split = s.nextLine().split(", "); 

      String fname = split[0]; 

      Double q1 = Double.parseDouble (split[1]); 
      Double q2 = Double.parseDouble (split[2]); 
      Double q3 = Double.parseDouble (split[3]); 
      Double q4 = Double.parseDouble (split[4]); 
      Double proji = Double.parseDouble (split[5]); 
      Double projii = Double.parseDouble (split[6]); 
      Double projiii = Double.parseDouble (split[7]); 

      double studentgrade = (q1 *0.1) + (q2 *0.1) +(q3 *0.1) + (q4 *0.1) +(proji*0.15) + (projii * 0.2) + (projiii *0.25); 
      if(studentgrade>90) 
       System.out.printf("%s got an A\n", fname); 
      else if(studentgrade>80) 
       System.out.printf("%s got a B\n", fname); 
      else if(studentgrade>70) 
       System.out.printf("%s got a C\n", fname); 
      else if(studentgrade>60) 
       System.out.printf("%s got a D\n", fname); 
      else if(studentgrade>50) 
       System.out.printf("%s got a F\n", fname); 


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



    } 
    public void closeFile(){ 
     x.close(); 
    } 
    } 
+7

Java IO에 대한 자습서를 읽으십시오. –

답변

4

버퍼 된 작성기를 만듭니다. 이런 식으로 뭔가,

String fileName = outputName; 

    BufferedWriter writer = null; 
    try { 
     // create a temporary file 

     File outFile = new File(fileName); 

     // This will output the full path where the file will be written 
     // to... 

     String inFile = new File(inFileName).getAbsolutePath(); 

     File in = new File(inFile); 

     writer = new BufferedWriter(new FileWriter(outputName, true)); 
     writer.write(DATA THAT YOU WANT TO WRITE(Possibly an Method Argument Value)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      // Close the writer regardless of what happens... 
      writer.close(); 
     } catch (Exception e) { 
     } 
    } 

귀하의 outputName 당신이 쓰고 싶은 파일의 이름입니다 방법에 의해 촬영 된 인수가 (내 프로그램 중 하나에서 작성한 코드에서)입니다.

inFileName은 가져온 다른 인수이며 작성한 원본 파일의 이름입니다. 그것은, 그렇지 않으면,이 정확한 코드를 사용

* 메인 대답을 더 많은 작업이 필요합니다 : *

사용하십시오 BufferedWriter에게!

* 편집 : *

그냥 보조 노트, 당신은 BufferedWriter을 시작하는 경우, 당신은 그것을 두 개의 인수, outputNametrue을주는 등. 출력 이름은 분명히 파일을 출력 할 이름이고, true은 텍스트 파일에 추가하려는 것입니다 (현재 텍스트 파일을 덮어 쓰지 않고 기존 데이터에 추가 할 수 있음)

1

:

PrintWriter writer = new PrintWriter("output.txt", "UTF-8"); 

(writer.close()과) 루프 후 PrintWriter를 폐쇄, writer.println(...)와 루프 내부의 모든 System.out.println(...) 문을 교체 한 후 루프 전에, 당신이 원하는 텍스트 출력 파일을 얻을 것이다. 그러나 Java IO에서 올바르게 읽으십시오.

관련 문제