I have a question where I am asked to get a user to input a

I have a question where I am asked to get a user to input a sequence of speeds and I have to return a summary of the sequence, including # of readings, # over speed limit, max speed and average speed. Here is my code:

import java.util.Scanner;
public class Speed {
   public static void main(String[] args) {

       Scanner scan = new Scanner (System.in);

       int numReadings = 0;
       int maxSpeed = 0;
       int speedLimit = 0;
       int fastDrivers = 0;
       int totalSpeed = 0;

       System.out.println(\"Enter speed limit: \");
       speedLimit = scan.nextInt();

       System.out.println(\"Enter sequence of speeds terminated with negative value: \");
       int newSpeed=scan.nextInt();

       while (newSpeed > 0) {
               newSpeed = scan.nextInt();

               if (newSpeed > speedLimit) {
                   fastDrivers++;
               }

               if (newSpeed > maxSpeed) {
                   maxSpeed = newSpeed;
               }

               numReadings++;
               totalSpeed = totalSpeed + newSpeed;
          
       }
      
       int averageSpeed = totalSpeed/numReadings;

       System.out.println(numReadings + \" readings: \" + fastDrivers + \" over the speed limit, Maximum speed = \"                      
                           + maxSpeed + \", average speed = \" + averageSpeed);
   }

}

//end of code

The problem is that I get the wrong average speed so clearly the total speed is being calculated incorrectly. Here is my sample output:

User-MacBook-Air:Lab4 User$ java Speed

Enter speed limit:

100

Enter sequence of speeds terminated with negative value:

80 95 120 115 101 98 130 -1

7 readings: 4 over the speed limit, Maximum speed = 130, average speed = 94

//end of code
Correct answer should be:
7 readings: 4 over the speed limit, Maximum speed = 130, average speed = 105

Solution


import java.util.*;
public class testloop {
   public static void main(String[] args) {
       Scanner scan = new Scanner (System.in);
         
       int numReadings = 0;
       int maxSpeed = 0;
       int speedLimit = 0;
       int fastDrivers = 0;
       int totalSpeed = 0;
       int value=0;
       System.out.println(\"Enter speed limit: \");
       speedLimit = scan.nextInt();
       System.out.println(\"Enter sequence of speeds terminated with negative value: \");
       int newSpeed=scan.nextInt();
       while (newSpeed > 0) {
           value=newSpeed;
       newSpeed = scan.nextInt();
       if (newSpeed > speedLimit) {
       fastDrivers++;
       }
       if (newSpeed > maxSpeed) {
       maxSpeed = newSpeed;
       }
       numReadings++;
       totalSpeed+=value;
      
       }
      
       int averageSpeed = totalSpeed/numReadings;
       System.out.println(numReadings + \" readings: \" + fastDrivers + \" over the speed limit, Maximum speed = \"
       + maxSpeed + \", average speed = \" + averageSpeed);
       }
      
   }
output:
Enter speed limit:
100
Enter sequence of speeds terminated with negative value:
80
95
120
115
101
98
130
-1
7 readings: 4 over the speed limit, Maximum speed = 130, average speed = 105

I have a question where I am asked to get a user to input a sequence of speeds and I have to return a summary of the sequence, including # of readings, # over s
I have a question where I am asked to get a user to input a sequence of speeds and I have to return a summary of the sequence, including # of readings, # over s

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site