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
import java.io.File; //importing java.io.File
import java.io.FileNotFoundException; //importing FileNotFoundException for exception handling
import java.util.Scanner; //importing Scanner for user input
public class FileTotalAndAverage { //class FileTotalAndAverage
public static void main(String[] args) throws FileNotFoundException {
Scanner keyboard = new Scanner(System.in); //declaring and initializing a Scanner object for taking user input called keyboard
System.out.println("Please enter the file name or type QUIT to exit:"); //output message asking for a file name or exit command
String filename = keyboard.nextLine(); //declaring and initialising a string called filename to hold user-entered file name
//if user has entered 'quit' or 'Quit'
if (filename.equalsIgnoreCase("Quit")) {
return; //terminates the program
}
File myFile = new File(filename); //creating a File object myFile with the filename entered by the user
//if file does not exist
while (!myFile.exists()) {
System.out.println("File: " + filename + " does not exist."); //display message that file does not exist
System.out.println("Please enter the file name again or type QUIT to exit:"); //output message asking for a file name or exit command
filename = keyboard.nextLine(); //saving user-entered file name in the filename
//if user has entered 'quit' or 'Quit'
if (filename.equalsIgnoreCase("Quit")) {
return; //terminates the program
}
//creating File object myFile with the filename entered by the user
myFile = new File(filename);
}
Scanner inputFile = new Scanner(myFile); //Declaring and initializing a Scanner object for taking input from file called inputFile
//declaring and initializing variables to calculate total and average
int lines = 0; //counting number of lines in file
float total = 0.0f; //declaring a float variable called total to calculate total of all numbers
float average = 0.0f; //declaring a float variable called average to calculate average of all numbers
if(myFile.length()==0){
System.out.println("File "+ filename +" is empty.");
}
else{
//while loop to read file until EOF
while (inputFile.hasNext()) {
String str = inputFile.nextLine(); //declaring and initializing a string to store each line of the file temporarily
lines++; //incrementing lines
total += Float.parseFloat(str); //adding each number from the file to the total
}
//calculate average from total and number of lines
average = total / (float)lines;
//displaying total and average with 3 decimal digits
System.out.printf("Total: %.3f\n", total); //displaying total with 3 decimal digits
System.out.printf("Average: %.3f\n", average); //displaying average with 3 decimal digits
}
inputFile.close(); //closing the inputFile
}
}
Test Case 1
input1.txtENTER
Total: 11.800\n
Average: 2.950\n
Test Case 2
input2.txtENTER
Total: 17.300\n
Average: 3.460\n
Test Case 3
input3.txtENTER
Total: 1.124\n
Average: 1.124\n
Test Case 4
input4.txtENTER
File input4.txt is empty.\n
Test Case 5
input5.txtENTER
File: input5.txt does not exist.\n
Please enter the file name again or type QUIT to exit:\n
input1.txtENTER
Total: 11.800\n
Average: 2.950\n
Test Case 6
qUiTENTER
Test Case 7
input5.txtENTER
File: input5.txt does not exist.\n
Please enter the file name again or type QUIT to exit:\n
QuiTENTER
Trending now
This is a popular solution!
Step by step
Solved in 4 steps with 2 images