0

割り当てを実行しようとしていますが、収集されたすべてのデータがテキスト ファイルに書き込まれない理由がわかりません。基本的に、「マーク」と呼ばれる 1 つの .txt ファイルを読み取り、それを出力し (出力します)、2 つのファイルに分類する必要があります。グレードが 50 未満の場合は fail.txt に移動し、50 以上の場合は fail.txt に移動します。それは pass.txt に入れられます。marks.txt から最初のパスのみを取得し、それを pass.txt に入れ、marks.txt から 1 つを配置するには、8 つすべてをソートする必要があります。

ソースは次のとおりです。

import java.io.*;  

public class WriteKONG {  
public static BufferedReader read;  
public static PrintWriter WriteToPass;  
public static PrintWriter WriteToFail;  
public static String line;  


public static void main(String[] args) throws IOException  {  
        read = new BufferedReader(new FileReader("src/marks.txt"));  
        WriteToPass = new PrintWriter(new FileWriter("pass.txt"));  
        WriteToFail = new PrintWriter(new FileWriter("fail.txt"));  
        String StudentID;  
        String Course;  
        String MarkS;  
        int Mark;  

        line = read.readLine();  

        while(line != null)  
        {  
            sort();  
        }  


}  


 public static void sort() throws IOException  
{  

    read = new BufferedReader(new FileReader("src/marks.txt"));  
    WriteToPass = new PrintWriter(new FileWriter("pass.txt"));  
    WriteToFail = new PrintWriter(new FileWriter("fail.txt"));  
    String StudentID;  
    String Course;  
    String SMark;
    int Mark;  
    while (line != null) {
        line = read.readLine();  
        StudentID = line;  
        System.out.println("StudentID = " + StudentID);  

        line = read.readLine();  
        Course = line;  
        System.out.println("Course = " + Course);  

        line = read.readLine();
        SMark = line;  
        System.out.println("Mark = " + SMark + "\n");  

        Mark = Integer.valueOf(SMark);
        if(Mark >= 50)  
        {  
            WriteToPass.println(StudentID);  
            WriteToPass.println(Course);  
            WriteToPass.println(SMark);  
            WriteTopass.close();  
        }  

        else  
        {  
            WriteToFail.println(StudentID);  
            WriteToFail.println(Course);  
            WriteToFail.println(SMark);  
            WriteToFail.println(line);  
            WriteToFail.close();  
        }  

    }   

 } 
 }

ここにmarks.txtがあります:

75676881
English
94
75676883
Math
78
75676885
Physics
24
75676887
Chemistry
89
75676889
English
35
75676891
History
24
4

2 に答える 2

2

WriteToFail最初の繰り返しの後に閉じており、決して閉じませんWriteToPass

ループの後でのみ両方のファイルを閉じる必要があります。

line = read.readLine();
while (line != null) {  
    StudentID = line;  
    System.out.println("StudentID = " + StudentID);  

    line = read.readLine();  
    Course = line;  
    System.out.println("Course = " + Course);  

    line = read.readLine();
    SMark = line;  
    System.out.println("Mark = " + SMark + "\n");  

    Mark = Integer.valueOf(SMark);
    if(Mark >= 50)  
    {  
        WriteToPass.println(StudentID);  
        WriteToPass.println(Course);  
        WriteToPass.println(SMark);  
    }  
    else  
    {  
        WriteToFail.println(StudentID);  
        WriteToFail.println(Course);  
        WriteToFail.println(SMark);  
        WriteToFail.println(line);  
    }  
    line = read.readLine();
}   
WriteToPass.close();  
WriteToFail.close();  

main メソッドと sort メソッドでファイルを開いていることに気付きました。そうする理由がわかりません。メインは sort を呼び出すだけです:

public static void main(String[] args) throws IOException  
{  
    sort();
}
于 2014-11-14T18:40:05.260 に答える
0

試す

WriteToPass = new PrintWriter(new FileWriter("pass.txt",true));
于 2014-11-14T18:55:03.200 に答える