Program 1: RoadProfiler RoadProfiler: Pass level You must complete this part even if you want to do the Challenge level. You are to complete 3 methods that all participate in analysing and displaying the profile of a section of a road, based on a GPS measurements every 10 meters along the section of road. printAverageHeight method so that it computes and prints out the average height of the road. maximumHeight method so that it finds and returns the maximum height in the list. displayProfile method so that it plots the profile by drawing lines from each measurement point to the next. Output with input from heights.txt: road-profiler-screenshot.png Instructions and Tips: The average of a set of numbers is the sum of the numbers, divided how many numbers there are. To find the maximum, your loop will need to keep track of the largest height seen so far. You may want to use the value Double.NEGATIVE_INFINITY which is the smallest number that Java recognises. You must use the LEFT, SEA_LEVEL, and STEP constants. The analyseProfile() method (completed for you) reads a sequence of heights from the user, using the UI.askNumbers() method, then calls the 3 methods you need to complete. For testing, you can avoid having to type all the numbers each time by selecting "Set Input" on the UI frame's MENU then choose the file heights.txt. The UI will then automatically input the input from that file instead of waiting for you to type the numbers.
mport java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; import javax.swing.text.*; import javax.swing.border.*; import javax.swing.pl