欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java实现判断平面坐标中四个坐标值能否构成正方形

程序员文章站 2022-03-02 10:58:06
...

      本程序主要实现输入平面坐标系中四边形四个顶点的坐标值并判断是否是正方形。在程序中首先需要输入待判断的四边形个数,然后依次输入各四边形四个顶点的坐标值,每个四边形的坐标由两行数据组成,第一行数据是四个顶点的横坐标值,第二行数据是四个顶点对应的纵坐标值,如果是正方形则输出“yes”,不是则输出“no”。如下图所示,需要判断的四边形个数是3个,第一个四边形四个顶点的坐标是(0,0)、(1,0)、(1,1)和(0,1),第二个四边形四个顶点的坐标是(1,4)、(2,3)、(3,2)和(4,1),第三个四边形四个顶点的坐标是(5,8)、(6,7)、(7,6)和(8,5),判断结果为yes,no,no。

             Java实现判断平面坐标中四个坐标值能否构成正方形

程序如下:

import java.util.Arrays;
import java.util.Scanner;

public class Square {
	static int num;
	static int i=0;
	public static void main(String[] args){
		System.out.println("请输入数据:");
		Scanner sc=new Scanner(System.in);
		num=sc.nextInt();
		int[] data=new int[num*8];
		int[] dis=new int[num*6];
		String[] output=new String[num];
		int[] temp=new int[6];
		while(sc.hasNext()){
			data[i]=sc.nextInt();
			i++;
			if(i==(num*8)){
				break;
			}
		}
		for(int j=0;j<num;j++){
			dis[j*6]=getDis(data[j*8],data[j*8+4],data[j*8+1],data[j*8+5]);
			dis[j*6+1]=getDis(data[j*8],data[j*8+4],data[j*8+2],data[j*8+6]);
			dis[j*6+2]=getDis(data[j*8],data[j*8+4],data[j*8+3],data[j*8+7]);
			dis[j*6+3]=getDis(data[j*8+1],data[j*8+5],data[j*8+2],data[j*8+6]);
			dis[j*6+4]=getDis(data[j*8+1],data[j*8+5],data[j*8+3],data[j*8+7]);
			dis[j*6+5]=getDis(data[j*8+2],data[j*8+6],data[j*8+3],data[j*8+7]);
		}
		for(int j=0;j<num;j++){
			temp[0]=dis[j*6];
			temp[1]=dis[j*6+1];
			temp[2]=dis[j*6+2];
			temp[3]=dis[j*6+3];
			temp[4]=dis[j*6+4];
			temp[5]=dis[j*6+5];
			Arrays.sort(temp);
			if((temp[0]==temp[3])&&(temp[4]>=temp[3])&&(temp[4]==temp[5])){
				output[j]="yes";
			}else{
				output[j]="no";
			}
		}
		System.out.println(Arrays.toString(output));
	}
	public static int getDis(int x1,int y1,int x2,int y2){
		return (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
	}
}