 field to contain the error dialog
        private Dialog mDialog;

        /**
         * Default constructor. Sets the dialog field to null
         */
        public ErrorDialogFragment() {
            super();
            mDialog = null;
        }

        /**
         * Set the dialog to display
         *
         * @param dialog An error dialog
         */
        public void setDialog(Dialog dialog) {
            mDialog = dialog;
        }

        /*
         * This method must return a Dialog to the DialogFragment.
         */
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return mDialog;
        }
    }

    /**
     * An AsyncTask that calls getFromLocation() in the background. The class
     * uses the following generic types: Location - A
     * {@link android.location.Location} object containing the current location,
     * passed as the input parameter to doInBackground() Void - indicates that
     * progress units are not used by this subclass String - An address passed
     * to onPostExecute()
     */
    protected class GetAddressTask extends AsyncTask<Location, Void, String> {

        // Store the context passed to the AsyncTask when the system
        // instantiates it.
        Context localContext;

        // Constructor called by the system to instantiate the task
        public GetAddressTask(Context context) {

            // Required by the semantics of AsyncTask
            super();

            // Set a Context for the background task
            localContext = context;
        }

        /**
         * Get a geocoding service instance, pass latitude and longitude to it,
         * format the returned address, and return the address to the UI thread.
         */
        @Override
        protected String doInBackground(Location... params) {
            /*
             * Get a new geocoding service instance, set for localized
			 * addresses. This example uses android.location.Geocoder, but other
			 * geocoders that conform to address standards can also be used.
			 */
            Geocoder geocoder = new Geocoder(localContext, Locale.getDefault());

            // Get the current location from the input parameter list
            Location location = params[0];

            // Create a list to contain the result address
            List<Address> addresses = null;

            // Try to get an address for the current location. Catch IO or
            // network problems.
            try {

				/*
                 * Call the synchronous getFromLocation() method with the
				 * latitude and longitude of the current location. Return at
				 * most 1 address.
				 */
                addresses = geocoder.getFromLocation(location.getLatitude(),
                        location.getLongitude(), 1);

                // Catch network or other I/O problems.
            } catch (IOException exception1) {

                // Log an error and return an error message
                Log.e(LocationUtils.APPTAG,
                        getString(R.string.IO_Exception_getFromLocation));

                // print the stack trace
                exception1.printStackTrace();

                // Return an error message
                return (getString(R.string.IO_Exception_getFromLocation));

                // Catch incorrect latitude or longitude values
            } catch (IllegalArgumentException exception2) {

                // Construct a message containing the invalid arguments
                String errorString = getString(
                        R.string.illegal_argument_exception,
                        location.getLatitude(), location.getLongitude());
                // Log the error and print the stack trace
                Log.e(LocationUtils.APPTAG, errorString);
                exception2.printStackTrace();

                //
                return errorString;
            }
            // If the reverse geocode returned an address
            if (addresses!= null && addresses.size() > 0) {

                // Get the first address
                Address address = addresses.get(0);

                // Format the first line of address
                String addressText = getString(
                        R.string.address_output_string,

                        // If there's a street address, add it
                        address.getMaxAddressLineIndex() > 0? address
                               .getAddressLine(0) : "",

                        // Locality is usually a city
                        address.getLocality(),

                        // The country of the address
                        address.getCountryName()
                );

                // Return the text
                return addressText;

                // If there aren't any addresses, post a message
            } else {
                return getString(R.string.no_address_found);
            }
        }

        /**
         * A method that's called once doInBackground() completes. Set the text
         * of the UI element that displays the address. This method runs on the
         * UI thread.
         */
        @Override
        protected void onPostExecute(String address) {

            // Turn off the progress bar
            //mActivityIndicator.setVisibility(View.GONE);

            // Set the address in the UI
            appendStatus(address);
        }
    }
}

class PruneHazardsTask extends TimerTask {
    public MainActivity activity = null;

    public void run() {
        if (activity!= null) {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    boolean needReRegistration;
                    boolean cond1, cond2;

                    cond1 = activity.pruneInactiveRemoteHazardItems();
                    if (cond1) {
                        Log.d(activity.TAG, "One or more inactive remote hazards are removed");
                        activity.appendStatus("One or more inactive remote hazards are removed");
                    }

                    cond2 = activity.pruneInactiveLocalHazardItems();
                    if (cond2) {
                        Log.d(activity.TAG, "One or more inactive local hazards are removed");
                        activity.appendStatus("One or more inactive local hazards are removed");
                    }

                    needReRegistration = cond1 || cond2;
                    if (needReRegistration) {
                        activity.reRegisterHazards();
                        Log.d(MainActivity.TAG, "reRegisterHazards after pruning");
                        activity.appendStatus("reRegisterHazards after pruning");
                    }
                }
            });
        }
    }
}

class DiscoverHazardServicesTask extends TimerTask {
    public MainActivity activity = null;

    public void run() {
        if (activity!= null) {
            activity.clearHazardServiceRequests();
            activity.discoverHazardService();
        }
    }
}
First, you really need to read up on how arrays are created, accessed, and manipulated:
    Get-Help arrays

Arrays in PS don't need to have a length specified, so you can create an empty array to start with:
    [int[]]$numbers = @()

Use that as your first line and try to work from there.

Generally, you'll want to put everything that's a repeated action that does the same (or similar) work into a loop. This way the code is easier to maintain: if you ever need to change that action you only need to do the change once instead of 10 times. If you ever end up writing "Enter number 1", "Enter number 2", etc., look for a way to write that line *just once*, and then let that one line be executed inside a loop. Use the loop condition to control how often the code gets executed.

Assume that later you would want to change your script to read 20 numbers instead of 10. Try to find a way to have just one place in your script you need to change to let it read 20 numbers. When you're working on solid athletic form you dial all the intensity way down and focus on the movement. This is the same whether you're practicing a golf swing or running form.

And when I say slow I mean *honestly* slow. If you think "I could walk at this speed" that's where you want to be for practice. From your videos you look to be young and in good shape. But all the conditioning in the world won't save you from inefficient movement.

Keep in mind that the Dutch speedskating team started ramping up serious dominance when they slowed the speeds way down during practice. All the other teams around the world were still "feeling the burn" and working super hard each day while the Dutch were wearing heart monitors, keeping their speeds really slow and easy and focusing on form not just mindlessly beating themselves up.

It's a real challenge in racing sports like running, skating or biking to get over the psychological block that slow running can be a benefit. But it simply works.Dynes Auto Services with their head office at Crayford, Kent have been established for nearly 70 years and are well known for their range of automotive services which include recovery and vehicle movement.
They have recently been reviewing their recovery fleet to ensure they have the right mix of vehicles, of the right age and delivering the most cost effective recovery solutions to suit their requirements.
They turned to Mac Engledew at Recovery World to help them with their project and he has been able to assist them by