2014-01-05 21 views
-1

這是我的代碼的基礎。它在控制檯上打印學生成績,但是如何使用Buffereader將所有學生的成績放在新文件中。BufferReader用以前的信息寫入新文件

import java.io.*; 
import java.util.InputMismatchException; 
import java.lang.*; 
import java.util.*; 

public class WorkSpace { 

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(); 
    } 
+0

你得到什麼錯誤? –

+0

異常在線程 「主」 java.util.InputMismatchException \t在java.util.Scanner.throwFor(Scanner.java:909) \t在java.util.Scanner.next(Scanner.java:1530)在java的 \t .util.Scanner.nextInt(Scanner.java:2160) \t在java.util.Scanner.nextInt(Scanner.java:2119) \t在ReadFile.readFile(ReadFile.java:22) \t在Project3.main( Project3.java:15) – user3117328

+0

從上面,類Project3不調用readFile()。你從哪裏得到這個錯誤?爲您的項目提供適當的堆棧跟蹤。 –

回答

0

如何閱讀文件不正確。最常見的方式用掃描儀讀取文件:

try{ 
File file = new File("Your/File/Path"); 
Scanner s = new Scanner(file); 
s.useDelimiter("\n");//splits the whole file's text by "\n" 
while(s.hasNext()){ 
String next = s.next(); 
//parse your stuff 
} 
s.close(); 
}catch(Exception e){} 

此外, scanner.nextInt()不會返回該文件的長度。這是問題所在。使用 file.length來獲取文件的長度。

+0

看起來像你將它改爲while循環! PLZ upvote? – c0deb0t

0

Scanner.nextInt()返回從源讀取的下一個整數值(不是源長度或其他)。您打開文件並嘗試從頭開始讀取整數,但該文件不是以整數開頭,因此會出現異常。

+0

如何解決這個仍然能夠解析所有的字符串/雙打? – user3117328

+0

首先,刪除int numTimes = file.nextInt()。然後將你的for循環改爲while循環,就像11yearoldjavaguy的例子。改變他的字符串next = s.next(); to String [] split = file.nextLine()。split(「」);並像以前一樣進行拆分。 – Electrosuccess

+0

一旦我這樣做,我該如何繼續使用我的循環? – user3117328

0

你的問題沒有意義。 BufferedReader不寫入文件。它,錯誤,讀取文件。你想要的是,呃,一個BufferedWriter.

相關問題