您的位置:首页 > 编程语言

7-8 编程练习题答案

2014-06-21 15:00 323 查看
import java.util.Scanner;

public class Test
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of points: ");
int numberOfPoints = input.nextInt();

double[][] points = new double[numberOfPoints][2];
System.out.print("Enter " + numberOfPoints + " points: ");
for(int i = 0; i < points.length; i++)
{
points[i][0] = input.nextDouble();
points[i][1] = input.nextDouble();
}

int p1 = 0, p2 = 1;
double shortestDistance = distance(points[p1][0], points[p1][1], points[p2][0], points[p2][1]);

double[][][] equalDistance = new double[numberOfPoints][2][2];

for(int i = 0; i < points.length; i++)
{
for(int j = i + 1; j < points.length; j++)
{
double distance = distance(points[i][0], points[i][1], points[j][0], points[j][1]);
if(shortestDistance > distance)
{
p1 = i;
p2 = j;
shortestDistance = distance;
}
}
}

System.arraycopy(points[p1], 0, equalDistance[0][0], 0, points[p1].length);
System.arraycopy(points[p2], 0, equalDistance[0][1], 0, points[p2].length);

int count = 1;
for(int i = 0; i < points.length; i++)
{
for(int j = i + 1; j < points.length; j++)
{
double distance = distance(points[i][0], points[i][1], points[j][0], points[j][1]);
if((shortestDistance == distance) && ((p1 != i) || (p2 != j)))
{
System.arraycopy(points[i], 0, equalDistance[count][0], 0, points[i].length);
System.arraycopy(points[j], 0, equalDistance[count][1], 0, points[j].length);
count++;
}
}
}

System.out.println("The equal distance points are: ");
for(int i = 0; i < equalDistance.length; i++)
{
if((equalDistance[i][0][0] == 0) && (equalDistance[i][0][1] == 0) && (equalDistance[i][1][0] == 0) && (equalDistance[i][1][1] == 0) )
continue;
else
System.out.println("(" + equalDistance[i][0][0] + ", " + equalDistance[i][0][1] + ") (" + equalDistance[i][1][0] + ", " + equalDistance[i][1][1] + ")");
}
}

public static double distance(double x1, double y1, double x2, double y2)
{
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: