Write a java program that • creates three text files: grade1.txt, grade2.txt, gr
ID: 3761450 • Letter: W
Question
Write a java program that
• creates three text files: grade1.txt, grade2.txt, grade3.txt
-Each contains 5 students’ names (first name, last name) and grades (integers) that are obtained from the keyboard input.
• combine all three files into one text file: allgrades.txt
- It contains all 15 students' names and grades from the 3 text file.
o It also contains letter grades for each student
:If grade < 60, it adds letter grade "F"
:If 60 <= grade <70, it adds letter grade "D".
:If 70 <= grade < 80, it adds letter grade "C".
:If 80 <= grade < 90, it adds letter grade "B".
:If 90 <= grade, it adds letter grade "A".
• displays the contents of text file allgrade.txt on the console
Explanation / Answer
Please find the required solution:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
//test class
public class StudentTest {
public static void main(String[] args) throws IOException {
// array of input file names
String[] fileNames = { "grade1.txt", "grade2.txt", "grade3.txt" };
// output file name
String outputFile = "allgrades.txt";
// if the out file does not exist create it
File file = new File(outputFile);
if (!file.exists())
file.createNewFile();
// read data of all three files
FileWriter writer = new FileWriter(file);
BufferedWriter bwriter = new BufferedWriter(writer);
for (String fileName : fileNames) {
Scanner input = new Scanner(new File(fileName));
while (input.hasNext()) {
String line = input.nextLine();
// split the line using space
String word[] = line.split("\s+");
// create student object
Student student = new Student(word[0], word[1],
Integer.parseInt(word[2]));
System.out.println(student);
// write to file
bwriter.write(student.toString());
bwriter.newLine();
}
input.close();
}
bwriter.close();
}// end of main method
}// end of class StudentTest
class Student {
// properties of student
String firstName;
String lastName;
int grade;
// 2- argument constructor that initializes the state of student
public Student(String firstName, String lastName, int grade) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.grade = grade;
}// end of constructor
// Overriding toString method
@Override
public String toString() {
String letterGrade = "";
if (grade < 60) {
letterGrade = "F";
} else if (grade >= 60 && grade < 70) {
letterGrade = "D";
} else if (grade >= 70 && grade < 80) {
letterGrade = "C";
} else if (grade >= 80 && grade < 90) {
letterGrade = "B";
} else {
letterGrade = "A";
}
return firstName + " " + lastName + " " + grade + " " + letterGrade;
}// end of toString method
}// end of class
Input files:(first name,last name, grade)
grade1.txt
fname11 lname11 50
fname21 lname21 60
fname31 lname31 70
fname41 lname41 80
fname51 lname51 90
grade2.txt
fname12 lname12 50
fname22 lname22 60
fname32 lname32 70
fname42 lname42 80
fname52 lname52 90
grade3.txt
fname13 lname13 50
fname23 lname23 60
fname33 lname33 70
fname43 lname43 80
fname53 lname53 90
sample output file:allgrades.txt
fname11 lname11 50 F
fname21 lname21 60 D
fname31 lname31 70 C
fname41 lname41 80 B
fname51 lname51 90 A
fname12 lname12 50 F
fname22 lname22 60 D
fname32 lname32 70 C
fname42 lname42 80 B
fname52 lname52 90 A
fname13 lname13 50 F
fname23 lname23 60 D
fname33 lname33 70 C
fname43 lname43 80 B
fname53 lname53 90 A
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.