importjava.util.Scanner;/**
* 点到一个平面的距离
* 需要:一个点的坐标, 和一个平面的一般式
*/publicclassMain_distance{publicstaticvoiddisplayPoint(int[] arr){System.out.print("点p的坐标为:(");boolean bool =true;for(int i =0; i < arr.length ; i++){if(bool ==true){
bool =false;}else{System.out.print(",");}System.out.print( arr[i]);}System.out.println(")");}publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);int[] point =newint[3];//输入一个点的坐标System.out.print("输入一个点的坐标:");boolean flag =true;while(flag){for(int i =0; i < point.length ; i++)
point[ i ]= sc.nextInt();System.out.println("请确认你输入的数据是否如下,如果是请输入1,否则输入2并再次输入数据");displayPoint(point);int enter = sc.nextInt();if(enter ==1) flag =false;elsecontinue;}//输入平面的一般式int[] area =newint[4];System.out.println("输入平面的一般式:");
flag =true;while(flag ==true){for(int i =0; i < area.length ; i++)
area[ i ]= sc.nextInt();System.out.println("请确认你输入的数据是否如下,如果是请输入1,否则输入2并再次输入数据");displayArea(area);int enter = sc.nextInt();if(enter ==1) flag =false;elsecontinue;}//解决问题 公式System.out.println("点到平面的距离为:"+absSum(point,area)+"/sqrt("+sqrtSum(area)+")="+(int)(absSum(point,area)/Math.sqrt(sqrtSum(area))));}publicstaticintsqrtSum(int[] arr){double sum =0.0;for(int i =0; i < arr.length -1; i++){
sum +=Math.pow( arr[ i ],2);}return(int)sum;}publicstaticintabsSum(int[] arr1 ,int[] arr2){int sum =0;for(int i =0; i < arr1.length && i < arr2.length -1; i++){
sum +=(arr1[ i ]* arr2 [ i]);}
sum += arr2[arr2.length -1];returnMath.abs(sum);}privatestaticvoiddisplayArea(int[] area){char ch ='x';boolean bool =true;System.out.print("平面的一般式为:");for(int i =0; i < area.length -1; i++){if(bool ==true|| area[i ]<0) bool =false;elseSystem.out.print("+");System.out.print(area[ i ]);System.out.print((ch++));}System.out.print("+"+area[area.length -1]+"=0");}}