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

EBK JAVA PROGRAMMING
9th Edition
ISBN:9781337671385
Author:FARRELL
Publisher:FARRELL
Chapter13: File Input And Output
Section: Chapter Questions
Problem 10PE
icon
Related questions
Question
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
 
Here is a working code but please modify it so it passes the test cases because I run it it does not work: Also I do not need Goodbye. I run it through Hypergrade which has all the test cases and it does not pass. It says 0 out of 7 passed

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

 
 
Please enter the file name or type QUIT to exit:\n
input1.txtENTER
Total: 11.800\n
Average: 2.950\n
 

Test Case 2

 
 
Please enter the file name or type QUIT to exit:\n
input2.txtENTER
Total: 17.300\n
Average: 3.460\n
 

Test Case 3

 
 
Please enter the file name or type QUIT to exit:\n
input3.txtENTER
Total: 1.124\n
Average: 1.124\n
 

Test Case 4

 
 
Please enter the file name or type QUIT to exit:\n
input4.txtENTER
File input4.txt is empty.\n
 

Test Case 5

 
 
Please enter the file name or type QUIT to exit:\n
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

 
 
Please enter the file name or type QUIT to exit:\n
qUiTENTER
 

Test Case 7

 
 
Please enter the file name or type QUIT to exit:\n
input5.txtENTER
File: input5.txt does not exist.\n
Please enter the file name again or type QUIT to exit:\n
QuiTENTER
 
 
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 2 images

Blurred answer
Knowledge Booster
Files and Directory
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT