In hardware topology , each cell will have x1 number of input lines ( called as fan-in ) and y1 number of output lines ( called as fan-out ).the requirement is to identify the nearest cell with maximum fan-out.The input given is X Y coordinate of new cell. Then we want to find nearest one from the csv file. then wants to produce it fan-out?

For the problem definition , cell is defined by x-y co-ordinates.take a csv file as input.

cell_no,cell_x,cell_y,fan-out

1,4.6,30.23,56

2,3.2,100.766,67

3,3,2,98.766,23

The code given above is working correctly but i want to know is there is any other efficint way to do it?Code:`import java.io.*;`

import java.util.regex.*;

import java.util.Scanner;

class showfile

{

public static void main(String args[]) throws Exception

{

int i=1,count=0,j=0,k,d=0;

FileInputStream fin = new FileInputStream("empty");

DataInputStream in=new DataInputStream(fin);

BufferedReader br=new BufferedReader(new InputStreamReader(in));

String strline=null;

String[] dummy=null;

String x=null;

double y[]=new double[6];

double x2,y2;

double x1,y1;

double dist[]=new double[4];

double copy[]=new double[4];

double fanout[]=new double[3];

Scanner user=new Scanner(System.in);

System.out.println("Enter x value::\n");

x1=user.nextDouble();

user=new Scanner(System.in);

System.out.println("\nEnter y value::\n");

y1=user.nextDouble();

System.out.println("\n\n*******Content of CSV file**********\n\n");

while ((strline=br.readLine())!= null)

{

if(i>1)

{

int c=1;

System.out.println(strline);

dummy=strline.split(",");

fanout[d]=Double.parseDouble(dummy[3]);

d++;

try{

while(c<3)

{

x=dummy[c];

y[j]=Double.parseDouble(x);

c++;

j++;

}

}catch(NumberFormatException e){

System.out.println("Number format exception for input string");

}

}

else

{

System.out.println(strline);

}

i++;

}

count=y.length;

i=0;

j=0;

while(i<count)

{

x2=y[i];

i++;

y2=y[i];

dist[j]=Math.sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)));

j++;

i++;

}

j--;

for(i=0;i<=j;i++)

{

copy[i]=dist[i];

}

for(i=0;i<=j;i++)

{

for(k=i+1;k<=j;k++)

{

if(dist[i]>dist[k])

{

x2=dist[k];

dist[k]=dist[i];

dist[i]=x2;

}

}

}

for(i=0;i<=j;i++)

{

if(dist[0]==copy[i])

{

break;

}

}

System.out.println("\n \nfan-out= "+fanout[i]);

fin.close();

}

}