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。
程序如下:
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);
}
}
上一篇: 判断四个点是否能形成正方形
下一篇: javascript 倒计时