2015-05-24 32 views
1

因此,對於一個任務,我必須得接受一個看起來像一個文件:閱讀不同類型的數據從文件

2141512 
Math 
68 

7493674 
History 
82 

8403785 
English 
23 

4213432 
French 
75 

7556463 
Science 
97 

2345215 
ICS 
49 

較長的數字是學生人數和2位數字的由馬克,我需要一個讀取文件並創建另外兩個文件的程序。一個顯示如何傳遞的主題和標記(pass.txt),一個顯示誰失敗了他們的類(fail.txt)。到目前爲止,我已經這樣做了,但是我不知道如果我應該將它全部讀爲字符串並將標記轉換爲整數,並且我不知道如何將行讀作不同的數據類型。

import java.io.*; 

public class WriteKONG 
{ 
public static void main(String[] args) throws IOException 
{ 
    BufferedReader in; 
    in = new BufferedReader(new InputStreamReader(System.in)); 
     String line; 
     int i; 

    PrintWriter fail; 
    PrintWriter pass; 
    fail = new PrintWriter(new FileWriter("fail.txt")); 
    pass = new PrintWriter(new FileWriter("pass.txt")); 
    in = new BufferedReader(new FileReader("marks.txt")); 
    line = in.readLine(); 
    i = Integer.valueOf(line).intValue(); 
    while (line != null); 
    { 
    if (line != "English" || line != "Math" || line != "Science" || line != "ICS" || line != "History" || line != "French") 
     do { i = Integer.valueOf(line).intValue(); 
     pass.println(); 

     i = Integer.valueOf(line).intValue(); 
     while(line <= 50 || line < 101); 
     i = Integer.valueOf(line).intValue(); 
     if (line >= 49){ 
     fail.println(); 
     } 
     i = Integer.valueOf(line).intValue(); 
     if (line >= 50 || line < 101){ 
     pass.println();i = Integer.valueOf(line).intValue(); 

     } 

    } 
     while (line != null); 
    } 
    } 
}    
+0

Java中的掃描器類可以進行文件讀取,它具有Double,int,它可以讀取的字符串。 – Asura

回答

0

使用Scannernext()nextInt()方法。

Usage example與您擁有的相似。

+0

我被告知要使用緩衝讀取器 – Ryan

+0

@Ryan Well,這不是最好的建議,因爲'BufferedReader'更低級,它只能讀取單個字符或整行,這不像'Scanner'那樣方便你的情況。試試看,你會看到。 –

+0

@AdamStelmaszczyk它的功課,我猜他沒有選擇:P – TheUknown

0

您正在使用Java File API的正確途徑,您只需對代碼進行一些調整即可。

  1. 沒有琴絃與==比較改用line.equals("English")
  2. 需要更換所有||在第一如果與&&

  3. 你需要使用Integer.parseInt(line)

  4. 你需要刪除每隔一段時間陳述後都會有;。 (否則這些是無限循環)

我希望這可以幫助,試圖調試你的邏輯。

+0

'Integer.parseInt(line)'與'Integer.valueOf(line).intValue();' – TheUknown