import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class AppsFileProcessor {
public static void main(String[] args) throws Exception {
File file = new File("MobileAppData.txt");
Scanner sc = new Scanner(file);
if (sc.hasNextLine()) sc.nextLine();
ArrayList<MobileApp> appList = new ArrayList<>();
while (sc.hasNextLine()) {
String line = sc.nextLine().trim();
if (line.isEmpty()) continue;
String name = line.split("/")[0];
String pricePart = line.split("Price@")[1].split("/")[0];
double price = Double.parseDouble(pricePart);
String scorePart = line.split("Score=")[1].split("/")[0];
int score = Integer.parseInt(scorePart);
String subsPart = line.split("Subscribers=")[1].replace("k", "");
int subscribers = Integer.parseInt(subsPart) * 1000;
MobileApp app = new MobileApp(name, price, score, subscribers);
appList.add(app);
}
sc.close();
for (MobileApp app : appList) {
System.out.println(app);
}
}
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class GradesFileProcessor {
public static void main(String[] args) throws Exception {
File inputFile = new File("grades.txt");
Scanner fileScanner = new Scanner(inputFile);
PrintWriter writer = new PrintWriter("grades_stats.txt");
double classSum = 0;
int studentCount = 0;
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine().trim();
if (line.isEmpty()) continue;
String[] parts = line.split(" ");
int exam1 = Integer.parseInt(parts[0]);
int exam2 = Integer.parseInt(parts[1]);
int exam3 = Integer.parseInt(parts[2]);
double avg = (exam1 + exam2 + exam3) / 3.0;
classSum += avg;
studentCount++;
char letter = getLetterGrade(avg);
writer.printf("%d %d %d %.2f (%s)\n", exam1, exam2, exam3, avg, letter);
}
double classAvg = classSum / studentCount;
writer.printf("Class average = %.2f\n", classAvg);
fileScanner.close();
writer.close();
System.out.println("Done! Check grades_stats.txt");
}
private static char getLetterGrade(double grade) {
assert grade >= 0.0 && grade <= 100.0 : "invalid grade!";
if (grade >= 90) return 'A';
if (grade >= 80) return 'B';
if (grade >= 70) return 'C';
if (grade >= 60) return 'D';
return 'F';
}