Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
*8.31(幾何:交點)編寫一個方法,返回兩條直線的交點。四個點存放在4*2的二維數組points中。編寫一個程序,提示用戶輸入4個點,并顯示交點
- 題目
- 題目描述
- 破題
- 代碼
- 本題運行實例
題目
題目描述
*8.31(幾何:交點)編寫一個方法,返回兩條直線的交點。
假設(x1,y1)和(x2,y2)在直線1上,(x3,y3)和(x4,y4)在直線2上
方法頭為:
public static double[] getIntersectingPoint(double[][] points)
四個點存放在4*2的二維數組points中,方法返回交點或null(平行)
編寫一個程序,提示用戶輸入4個點,并顯示交點
課本提示:
兩條直線的交點可以使用編程練習題3.25(點擊直達)的公式求得
運行示例也要參見3.25
破題
代碼
import java.util.Scanner;public class Test8_31 {public static void main(String[] args) {//1. 主方法:聲明一個4*2的二維數組double[][] array = new double[4][2];//2. 主方法:輸出提示用戶賦值的語句,并使用循環接收值Scanner input = new Scanner(System.in);System.out.println("Enter x1, y1, x2, y2, x3, y3, x4, y4: ");for (int i = 0 ; i < 4 ; i++){for (int j = 0 ; j < 2 ;j++){array[i][j] = input.nextDouble();}}//3. 主方法:聲明一個長度為2的一維數組double[] intersection = new double[2];//4. 主方法:調用方法getIntersectingPoint,使用剛剛聲明的一維數組接收方法返回值intersection = getIntersectingPoint(array);//5. 主方法:輸出坐標,以如下格式輸出:The intersecting point is at (2.88889, 1,1111)System.out.println("The intersecting point is at (" + intersection[0] + ", " + intersection[1] + ")");}public static double[] getIntersectingPoint(double[][] points){//6. 方法getIntersectingPoint:創建如下6個double數字a b c d e f,b和d初始值設置為1// a=-k1 b=1 c=-k2 d=1 e=b1 f=b2double a, c, e, f, b=1, d=1;//7. 方法getIntersectingPoint:對數組四個元素進行遍歷,計算兩個直線的斜率與截距// (分別賦值給-a -c e f)a = - (points[1][1] - points[0][1]) / (points[1][0] - points[0][0]);c = - (points[3][1] - points[2][1]) / (points[3][0] - points[2][0]);e = points[0][1] + a * points[0][0];f = points[2][1] + c * points[2][0];//8. 方法getIntersectingPoint:聲明一個一維數組,長度為2double[] center = new double[2];//9. 方法getIntersectingPoint:使用公式求出交點坐標,如果無法求出則強制退出并輸出,如果求出則賦值給剛剛聲明的一維數組if (a == c){System.out.println("The two lines are parallel");System.exit(1);}center[0] = (e * d - b * f) / (a * d - b * c);center[1] = (a * f - e * c) / (a * d - b * c);//10. 方法getIntersectingPoint:返回交點坐標數組return center;} }本題運行實例
Enter x1, y1, x2, y2, x3, y3, x4, y4: 2 2 5 -1.0 4.0 2.0 -1.0 -2.0 The intersecting point is at (2.888888888888889, 1.1111111111111112)總結
以上是生活随笔為你收集整理的Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第8章:*8.30(
- 下一篇: Java黑皮书课后题第8章:*8.32(