Java问题:已知四个点,求直线是否平行,并显示交点

题目:
第一条直线上面的两个点是(x1,y1)和(x2,y2),第二条直线上面的两个点是(x3,y3)和(x4,y4),
两条直线的交点可以通过下面的线性方程组求解:
(y1-y2)x - (x1-x2)y =(y1-y2)x1 - (x1-x2)y1
(y3-y4)x - (x3-x4)y =(y3-y4)x3 - (x3-x4)y3
如果方程无解,则两条直线平行。
编写一个程序,提示用户输入这四个点,然后显示它们的交点。

代码如下:
package com;
import java.util.Scanner;
class Equation {
private int x1;
private int y1;
private int x2;
private int y2;
private int x3;
private int y3;
private int x4;
private int y4;
public Equation(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.x3 = x3;
this.y3 = y3;
this.x4 = x4;
this.y4 = y4;
}

public int getX1() {
    return x1;
}
public int getY1() {
    return y1;
}
public int getX2() {
    return x2;
}
public int getY2() {
    return y2;
}
public int getX3() {
    return x3;
}
public int getY3() {
    return y3;
}
public int getX4() {
    return x4;
}
public int getY4() {
    return y4;
}
public boolean isSolvab1e() {
    int i,j,k,l,m,n,o;
     i=y1-y2;j=x1-x3;
     k=y3-y4;l=x3-x4;
     m=(y1-y2)*x1-(x1-x2)*y1;
     n=(y3-y4)*x3-(x3-x4)*y3;
     o=i*l-j*k;
     if(o!=0){
         return true;
     }
     else{return false;}
}
public int getX(){
    int i,j,k,l,m,n,o;
    i=y1-y2;j=x1-x3;
    k=y3-y4;l=x3-x4;
    m=(y1-y2)*x1-(x1-x2)*y1;
    n=(y3-y4)*x3-(x3-x4)*y3;
    return (m*l-j*n)/(i*l-j*k);
}
public int getY(){
    int i,j,k,l,m,n,o;
    i=y1-y2;j=x1-x3;
    k=y3-y4;l=x3-x4;
    m=(y1-y2)*x1-(x1-x2)*y1;
    n=(y3-y4)*x3-(x3-x4)*y3;
    return (i*n-m*k)/(i*l-j*k);
}

}
public class test {
public static void main(String[] args) {
System.out.println(“请输入四个点的值:”);
Scanner sc = new Scanner(System.in);
int x1 = sc.nextInt();
int y1 = sc.nextInt();
int x2 = sc.nextInt();
int y2 = sc.nextInt();
int x3 = sc.nextInt();
int y3 = sc.nextInt();
int x4 = sc.nextInt();
int y4 = sc.nextInt();
Equation x = new Equation(x1,y1,x2,y2,x3,y3,x4,y4);
if (x.isSolvab1e() == true) {
System.out.println(“两条直线的交点是”);
System.out.println("x is " + x.getX());
System.out.println("y is " + x.getY());
} else {
System.out.println(“直线平行”);
}
}
}
运行结果:
在这里插入图片描述

此文为原创,转载请注明出处。
如对你有帮助,请给我一个赞!

发布了9 篇原创文章 · 获赞 9 · 访问量 2164

猜你喜欢

转载自blog.csdn.net/grandniu/article/details/105471460