JAVA PROGRAM Chapter 4. Homework Assignment (read instructions carefully) Write a program that asks the user for the name of a file. The program should read all the numbers from the given file and display the total and average of all numbers in the following format (three decimal digits): Total: nnnnn.nnn Average: nnnnn.nnn Class name: FileTotalAndAverage PLEASE FIX, CHANGE AND MODIFY THIS JAVA PROGRAM SO WHEN I UPLOAD IT TO HYPERGRADE IT PASSES ALL TEST CASSES PLEASES. RIGHT NOW IT SAYS 0 OUT 3 PASSED. THE PICTURES THAT I PROVIDED PROOF THAT WHEN I UPLOAD IT TO HYPERGRADES IT FAILS TEST CASSES. THANK YOU. import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.InputMismatchException; import java.util.Locale; import java.util.Scanner; public class FileTotalAndAverage { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String fileName; do { System.out.println("Please enter the file name: "); fileName = scanner.nextLine(); try { // Read numbers from the file double[] numbers = readNumbersFromFile(fileName); if (numbers != null) { // Calculate total and average double total = calculateTotal(numbers); double average = calculateAverage(numbers); // Display the results with three decimal digits using US locale String totalStr = String.format(Locale.US, "%.3f", total); String averageStr = String.format(Locale.US, "%.3f", average); System.out.println("Total: " + totalStr); System.out.println("Average: " + averageStr); break; // Exit the loop if successful } } catch (IOException e) { System.out.println("File '" + fileName + "' does not exist."); } catch (InputMismatchException e) { System.out.println("Invalid data in the file. Please make sure the file contains only numeric values."); } } while (true); scanner.close(); } private static double[] readNumbersFromFile(String fileName) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line; double[] numbers = null; try { line = reader.readLine(); if (line != null) { String[] tokens = line.split("\\s+"); numbers = new double[tokens.length]; for (int i = 0; i < tokens.length; i++) { numbers[i] = Double.parseDouble(tokens[i]); } } } finally { reader.close(); } return numbers; } private static double calculateTotal(double[] numbers) { double total = 0; for (double num : numbers) { total += num; } return total; } private static double calculateAverage(double[] numbers) { double total = calculateTotal(numbers); return total / numbers.length; } } Input1.txt -283.760 -456.167 19.815 -322.301 344.949 -850.533 -672.360 -188.767 646.462 -118.775 808.613 -746.865 -370.432 219.607 -166.298 -508.636 -989.128 -205.020 -928.165 -180.699 300.753 316.036 709.371 -886.860 -585.388 -554.302 -394.801 -970.233 905.941 787.854 -181.240 74.665 802.453 -951.292 -510.656 -203.999 -276.199 -350.575 398.501 -519.799 469.199 592.120 713.424 155.967 585.481 -780.846 387.700 457.806 560.933 -343.916 486.806 -43.184 237.494 191.488 309.275 -64.415 -206.333 -377.696 -409.553 -734.282 -777.221 -318.800 -695.745 40.631 -384.036 -937.134 -380.501 -77.083 756.524 -720.959 -579.412 -215.301 542.097 -402.541 468.721 151.050 573.296 -342.210 758.038 200.691 882.294 8.042 -87.760 634.811 -777.953 767.795 570.716 594.012 596.648 900.010 -370.754 985.007 785.562 -838.952 -71.182 72.845 -500.759 698.946 527.167 1.082
JAVA PROGRAM
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Locale;
import java.util.Scanner;
public class FileTotalAndAverage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String fileName;
do {
System.out.println("Please enter the file name: ");
fileName = scanner.nextLine();
try {
// Read numbers from the file
double[] numbers = readNumbersFromFile(fileName);
if (numbers != null) {
// Calculate total and average
double total = calculateTotal(numbers);
double average = calculateAverage(numbers);
// Display the results with three decimal digits using US locale
String totalStr = String.format(Locale.US, "%.3f", total);
String averageStr = String.format(Locale.US, "%.3f", average);
System.out.println("Total: " + totalStr);
System.out.println("Average: " + averageStr);
break; // Exit the loop if successful
}
} catch (IOException e) {
System.out.println("File '" + fileName + "' does not exist.");
} catch (InputMismatchException e) {
System.out.println("Invalid data in the file. Please make sure the file contains only numeric values.");
}
} while (true);
scanner.close();
}
private static double[] readNumbersFromFile(String fileName) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
double[] numbers = null;
try {
line = reader.readLine();
if (line != null) {
String[] tokens = line.split("\\s+");
numbers = new double[tokens.length];
for (int i = 0; i < tokens.length; i++) {
numbers[i] = Double.parseDouble(tokens[i]);
}
}
} finally {
reader.close();
}
return numbers;
}
private static double calculateTotal(double[] numbers) {
double total = 0;
for (double num : numbers) {
total += num;
}
return total;
}
private static double calculateAverage(double[] numbers) {
double total = calculateTotal(numbers);
return total / numbers.length;
}
}
-456.167
19.815
-322.301
344.949
-850.533
-672.360
-188.767
646.462
-118.775
808.613
-746.865
-370.432
219.607
-166.298
-508.636
-989.128
-205.020
-928.165
-180.699
300.753
316.036
709.371
-886.860
-585.388
-554.302
-394.801
-970.233
905.941
787.854
-181.240
74.665
802.453
-951.292
-510.656
-203.999
-276.199
-350.575
398.501
-519.799
469.199
592.120
713.424
155.967
585.481
-780.846
387.700
457.806
560.933
-343.916
486.806
-43.184
237.494
191.488
309.275
-64.415
-206.333
-377.696
-409.553
-734.282
-777.221
-318.800
-695.745
40.631
-384.036
-937.134
-380.501
-77.083
756.524
-720.959
-579.412
-215.301
542.097
-402.541
468.721
151.050
573.296
-342.210
758.038
200.691
882.294
8.042
-87.760
634.811
-777.953
767.795
570.716
594.012
596.648
900.010
-370.754
985.007
785.562
-838.952
-71.182
72.845
-500.759
698.946
527.167
1.082
Step by step
Solved in 4 steps with 3 images