解决此题的关键性在于明白证明一个形状为正方形的条件,首先是四条边相等,在加上有一个直角或者有一对边是平行线,即满足是一个正方形。而我们则采用“倒推”的形式解决此题,首先,如果一个形状是正方形,那么四点构成的边则有四条,分别是四条边+两条对角线,显然对角线是根号2倍的边长。明白了这些,我们开始着手做题,首先把六条边分别求出来,再利用数组中的sort()方法对六条边进行排序,如果排序的结果符合前四个结果相等,后两个结果相等且是前四个结果的根号2倍的,那就判为是正方形,否则则不是。 import java.util.*; public class Main {

public static void main(String[] args) {
	
	Scanner sc=new Scanner(System.in);
	int[] X=new int[4];
	
	for(int i=0;i<4;i++) {
		X[i]=sc.nextInt();
	}
    int[] Y=new int[4];
	for(int j=0;j<4;j++) {
		Y[j]=sc.nextInt();
	}
    int[] z=new int[6];
     z[0]=Math.abs(X[0]-X[1])*Math.abs(X[0]-X[1])+Math.abs(Y[0]-Y[1])*Math.abs(Y[0]-Y[1]);
   	 z[1]=Math.abs(X[0]-X[2])*Math.abs(X[0]-X[2])+Math.abs(Y[0]-Y[2])*Math.abs(Y[0]-Y[2]);
   	 z[2]=Math.abs(X[0]-X[3])*Math.abs(X[0]-X[3])+Math.abs(Y[0]-Y[3])*Math.abs(Y[0]-Y[3]);
   	 z[3]=Math.abs(X[1]-X[2])*Math.abs(X[1]-X[2])+Math.abs(Y[1]-Y[2])*Math.abs(Y[1]-Y[2]);
   	 z[4]=Math.abs(X[1]-X[3])*Math.abs(X[1]-X[3])+Math.abs(Y[1]-Y[3])*Math.abs(Y[1]-Y[3]);
   	 z[5]=Math.abs(X[2]-X[3])*Math.abs(X[2]-X[3])+Math.abs(Y[2]-Y[3])*Math.abs(Y[2]-Y[3]);
 Arrays.sort(z);

// int count=0; // for(int k=0;k<6;k++) { // // if(z[k]==z[3]) { // count++; // } // // } if(z[0]==z[1] && z[1]==z[2] && z[2]==z[3] && z[4]==z[5]) { System.out.println("It's a square"); } else { System.out.println("Not a square"); }

// System.out.print(a+" "); // System.out.print(b+" "); // System.out.print(c+" "); // System.out.print(d+" "); // for(int i=0;i<6;i++) { // System.out.print(z[i]+" "); // } }

}