このタイプの問題に対処する方法を知っていただければ幸いです。前もって感謝します。 ここに質問があります。Javaファイルio平均を計算して別のファイルに保存する
ファイルの最初の行には2つの整数が含まれています。 件名件数試験グレード
件数:ファイル内のレコード数を示します。 exam-grade:試験の成績を示します。 ファイルは生徒の名前とその成績順に表示されます。 サンプルファイル:test1.txtという は4つのレコードを格納します。これは、試験は80の外にあるファイルは、学生の名前や学年によって、次のとおりです。
4 80
Mary 65.5
Jack 43.25
Harry 79.0
Mike 32.5
あなたは、次のメソッドの本体を開発する必要があります。
srcFileNameから各学生の成績を読み込み、公共の静的な無効READWRITE(文字列srcfileName、文字列dstFileName)
は、そのグレードのパーセントを計算し、もし生徒が合格したか失敗したことを示し、最後にクラスの平均を報告し、数生徒数、生徒数試験をリードし、結果をdstFileNameに保存します。 前のテストファイルの出力ファイルは次のようになります。ここ
Mary 81.88 passed
Jack 54.06 passed
Harry 98.75 passed
Mike 40.63 failed
class average:68.83
passed: 3
failed: 1
が、私はそれのために書いたコードであり、
import java.util.*;
import java.io.*;
public class Lab10Quiz {
public static void main(String[] args) throws FileNotFoundException
{
// Test cases
readWrite("test1.txt", "out1.txt");
readWrite("test2.txt", "out2.txt");
}
/** copies the content of the srcFileName into dstFileName, and add the average of the number to the end of the dstFileName
@param srcFileName : souce file name contains double numbers
@param dstFileName : destination file name
*/
public static void readWrite(String srcFileName, String
dstFileName) throws FileNotFoundException {
// Your code goes here
File output = new File(dstFileName);
PrintWriter outPut = new PrintWriter(output);
double avg = 0;
int count = 0;
double tmp = 0;
Scanner in = new Scanner(new File(srcFileName));
while (in.hasNextDouble()) {
tmp = in.nextDouble();
avg += tmp;
outPut.println(tmp);
count ++;
}
avg = avg/count;
outPut.println("Average = " + avg);
outPut.close();
}
}
非常に興味深いです。また質問がありましたか? –
あなたの入力行が異なるデータ型で構成されているため、それぞれをプロンプトするか、おそらくより良い方法は行を読んでから空白で分割することです。 –
初心者のプログラマーとして、タスクは問題を解決するための素晴らしい方法です。私は最初にファイルを読んで、@ SkaryWombatのようなスペースを分割し、ファイル情報を何らかのタイプのデータ構造体( 'List'または' Array')に保存します。次に、データ構造をループして計算を行い、その情報を同様のデータ構造に保存します。私は最終的に、私のデータ構造の情報を使ってファイルに書き出します。 – Sedrick