Question

JAVA Bike shares are becoming increasingly common in cities in the United States. Commuters have been...

```JAVA
Bike shares are becoming increasingly common in cities in the United States. Commuters have been using bike sharing as a method of transportation for the flexibility, cost savings, exercise, and a myriad of other benefits. While being quite successful, many bike shares are still relatively new and have room for optimization.  To help with the optimization process, we want to analyze bike share data from the city of Los Angeles. The first step of the process is to collect data from each bikeshare station.

Now you are hired to visit the bikeshare stations (2<=N<=100,000) and collect data. All stations should be visited in sequence, where station 1 is the starting point and station N is the finish. You are supposed to visit all of these bikeshare stations one by one, but it is OK if you decide to skip one station in order make your whole travel distance shorter. You cannot skip bikestation 1 and N.

Please design a program named BikeshareDistance.java and implement the following methods to find the minimum distance that you have to travel if you can skip up to one bikeshare station.

public static long distance(String fileName) throws IOException
This method returns the minimum distance that you have to travel stations (specified in the file) if can skip upto one bike station.

public static long[] distance(String[] fileNames) throws IOException
This method returns minimum travel distance corresponding to each file.

For the data stored in the fileName(s), please refer to the Input File Formt

Since the routes in a downtown area are set with a grid of streets, the distance between two bikeshare station at locations (x1, y1) and (x2, y2) is given by "Manhattan" distance, which is measured by |x1-x2| + |y1-y2|- the absolute difference in x plus the absolute difference in y.

The Manhattan distance is based on the grid-like street geography of the New York borough of Manhattan. As shown in the following figure - Red: Manhattan distance. Green: diagonal, straight-line distance. Red, blue, yellow: equivalent Manhattan distances.

Input file format:

The first line contains a number N-total bikeshare stations, followed by N lines containing coordinates (x, y) of the N stations, both x and y are within the range of [-1000, 1000]. The bikeshare stations are given in the order that they should be checked. Some stations may be checked more than once at difference times in the predetermined sequence. If you skip such bikeshare station, you skip only one instance of the station--you DO NOT skip every visit at the same station.

SAMPLE INPUT:

4
0 0
8 3
11 -1
10 0

The minimum distance traveled is 14.```

CODE:

import java.util.*;
import java.lang.*;
import java.io.*;
class BikeshareDistance
{
public static long[] distance(String[] fileNames) throws IOException
{
long[] ans=new long[fileNames.length];//array to store the answers.
for(int m=0;m<fileNames.length;m++)
{
//creates a file scanner object.
Scanner scan=new Scanner(new File(fileNames[m]));
int N;//number of bike stations.
int i,j;//loop variables.
long distsum=0;
long min;//to store te minimum distance.
N=scan.nextInt();
long[] x=new long[N]; //array to store the x cordinate.
long[] y=new long[N];//array to store y cordinate.
//loop to take inputs.
for(i=0;i<N;i++)
{
x[i]=scan.nextLong();//taking x cordinate from file.
y[i]=scan.nextLong();//taking y cordinate from file.
}
//calculating the total distance first.
for(j=0;j<N-1;j++)
{
distsum=distsum+Math.abs(x[j]-x[j+1])+Math.abs(y[j]-y[j+1]);//manhattan distance.
} //calcualates the total distance.
min=distsum; //starts with maximum
for(i=1;i<N-1;i++)
{
//calculate all possible skips except 1 and n
long tempdist=0,particular,temptotal;
for(j=i-1;j<i+1;j++)
{
//manhattan distance.
tempdist=tempdist+Math.abs(x[j]-x[j+1])+Math.abs(y[j]-y[j+1]);
}
particular = Math.abs(x[i-1]-x[i+1])+Math.abs(y[i-1]-y[i+1]);//distance at particular position.
temptotal=distsum-tempdist+particular; //this calculates the total value if i th position is skipped
if(min>temptotal)
{
//minimum value is stored here.
min=temptotal;
}
}
//minimum value is stored in the answer.
ans[m]=min;
}
return ans;
}
public static void main(String []args) throws IOException
{
String[] l={"input.txt"};//take the strings of names of the inputs here.
long[] k=distance(l);//calling the distance functioin and storing them in k array.
for(int i=0;i<l.length;i++)
{
//printing the output according to file.
System.out.println("The minimum distance of inputs in file "+l[i]+" is : "+k[i]);
}
}
}
CODE ATTACHMENTS:

input.txt:

OUTPUT:

I have done for the filenames.There you need to change the array names in the main method.

Then the distance method takes those strings and returns the answers.

Please do comment for any queries.
Thank You.

Earn Coins

Coins can be redeemed for fabulous gifts.

Need Online Homework Help?

Most questions answered within 1 hours.

Active Questions
• Emerald Co. uses a perpetual inventory system and records purchases of merchandise at net cost. The...
• Movie stars and U.S. presidents have fished Pyramid Lake. It is one of the best places...
• what advantages do percent distributions have over frequency distributions when comparing populations at different years?
• Richard has just been given a 6-question multiple-choice quiz in his history class. Each question has...
• Write about westernized elements in life; westernization in our life, and this includes Americanization.
• The college Physical Education Department offered an Advanced First Aid course last summer. The scores on...