题目集1~3的总结性Blog

1.前言

截止目前,我已经在pta上完成了三次作业。第一次作业是简单的功能编写,共有9道题,实现一些较为容易的功能。第二次作业是较为复杂的功能编写,共有3道题,重点集中在第二题(7-2-串口字符解析)。第三次则是更为复杂的功能编写,三道题目之间互相联系,由浅入深。

2.设计与分析

由于第一次作业较为简单,这里我就不再进行赘述了

1.(串口字符解析)第二次作业

 

 

 

 

本题要求我们对由0、1组成的二进制数据流进行数据提取。源码如下

package 作业;

import java.util.Scanner;

public class Main{

public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in = new Scanner(System.in);
String str = in.nextLine();
boolean flag=false;
int sum = 0;
int t = 1;
int c=0;
for(int i=0;i<str.length();i++)
{
char a=str.charAt(i);
if(a=='1')
{
flag=false;
}
if(a=='0') {
flag=true;
break;
}
}
if(flag) {
if(str.length()>=11) {
for(int j=0;j<str.length(); j++) {
c=0;
char b=str.charAt(j);
if(b=='0')
{
if(j+11<=str.length()) {
String number = str.substring(j+1,j+9);
for(int i=j+1;i<j+9;i++) {//奇偶位判断(奇判断)
if(str.charAt(i)=='1') {
sum++;
}
}
if(sum%2==0) {
c = 0;
}
if(sum%2==1) {
c = 1;
}
char e = str.charAt(j+9);
char d = str.charAt(j+10);
//char c = str.charAt(j+9);
if(((c==1&&e=='1')||(c==0&&e=='0'))&&d=='1') {
System.out.println(t+":"+"parity check error");
}


else if(d=='1'&&((c==1&&e=='0')||(c==0&&e=='1'))) {
System.out.println(t+":"+number);
}
else {
System.out.println(t+":"+"validate error");
}
}
j=j+10;
t++;
}
}
}
if(str.length()<11) {
System.out.print("null data");
}
}
else{
System.out.print("null data");
}
}
}

首先我们需要判断输入的数据流的位数是否为11的倍数。数据流由四部分部分组成,分别是起始位,奇偶位,数据位及结束位。先提取出数据流的第一位(起始位),第二位(奇偶位),最后一位(结束位),再提取剩余八位数据,对其求解奇偶数。其次,我们分别判断起始位,奇偶位和求得奇偶数,结束位是否满足题目要求。最后判断八位数据的数字组成即可。如果八位数字全部为1,则错误输出,否则即为正确输出。

2.(计算两点的距离-7-1)第三次作业

 

 

源码如下

package 作业;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		//String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?";
		get x = new get();
		x.get1(str);
	}

}
class get {
	public void get1(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==2&&flag1==1) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char e = a.charAt(k);
						if(e==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							String g = a.substring(k+1,a.length());
							y2=Double.parseDouble(g);
							//System.out.println(y2);
							break;
						}
						}
					sum= Math.sqrt(Math.pow((x1-x2),2) + Math.pow((y1-y2),2));
					System.out.print(sum);
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>2) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}

 在本题中,我们将获得两点坐标,如何在输入中获得我们需要的数据便成了本题的主要难点。首先,我们需要对输入的数据进行格式判断,在本题中,我用的方法是正则表达式,通过判断输入的数据格式是否满足正则表达式进行数据的去或留。如果满足正则表达式,就进入下一步寻找','及' '的位置并把他们保存下来。对于第一个数,我们取String中第0位到第一个','处。对于第二个数,我们则取第一个','处到第一个' '处。对于第三个数,我们则取第一个' '处到第二个','处。对于第四个数,我们则取我们则取第二个','处到第二个' '处。注意在正则表达式之后,在提取数字之前,我们还需要判断' '与','的个数。只有当' '与','的个数等于1与2时,上述方法成立。最后通过提取出的数计算距离即可,距离公式为Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)(y1-y2))

3.(线的计算-7-2)第三次作业

 

 

 

源码如下:

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		char ty  = str.charAt(0);
		if(ty=='1'||ty=='2'||ty=='3'||ty=='4'||ty=='5') {
		String wei = str.substring(2,str.length());
		switch(ty) {
		case '1':
			get x = new get();
			x.get1(wei);
			break;
		case '2':
			get3 c = new get3();
			c.get4(wei);
			break;
		case '3':
			get5 v = new get5();
			v.get6(wei);
			break;
		case '4':
			get7 u = new get7();
			u.get8(wei);
			break;
		case '5':
			get9 we = new get9();
			we.get10(wei);	
			break;
		}
		}
		else {
			System.out.print("Wrong Format");
		}
	}

}
class get {
	public void get1(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k11=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";
		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==2&&flag1==1) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char qj = a.charAt(k);
						if(qj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							String g = a.substring(k+1,a.length());
							y2=Double.parseDouble(g);
							//System.out.println(y2);
							break;
						}
						}
					
					//sum= Math.sqrt(Math.pow((x1-x2),2) + Math.pow((y1-y2),2));
					if(x1==x2&&y1==y2) {
						System.out.print("points coincide");
					}
					else if(x1==x2&&y1!=y2) {
						System.out.print("Slope does not exist");
						}
					else {
						k11 = (y1-y2)/(x1-x2);
						System.out.print(k11);
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>2) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}

class get3 {
	public void get4(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==3&&flag1==2) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char e = a.charAt(k);
						if(e==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							String y = a.substring(m+1,a.length());
							y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					//sum = Math.abs((y3-y2)*x1+(x2-x3)*y1+x3*y2-y3*x2)/Math.sqrt((y3-y2)*(y3-y2) +(x3-x2)*(x3-x2));
					if(x2==x3&&y2==y3) {
						System.out.print("points coincide");
					}
					else {
						sum = Math.abs((y3-y2)*x1+(x2-x3)*y1+x3*y2-y3*x2)/Math.sqrt((y3-y2)*(y3-y2) +(x3-x2)*(x3-x2));
						System.out.print(sum);
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>3) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}
class get5 {
	public void get6(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k1=0;
		double k2=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==3&&flag1==2) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char gj = a.charAt(k);
						if(gj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							String y = a.substring(m+1,a.length());
							y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					k1=(y1-y2)/(x1-x2);
					k2=(y3-y2)/(x3-x2);
					//sum = Math.abs((y3-y2)*x1+(x2-x3)*y1+x3*y2-y3*x2)/Math.sqrt((y3-y2)*(y3-y2) +(x3-x2)*(x3-x2));
					if((x2==x3&&y2==y3)||(x2==x1&&y2==y1)||(x1==x3&&y1==y3)) {
						System.out.print("points coincide");
					}
					else if(k1==k2||((x1==x2&&x2==x3)&&(y1!=y2&&y2!=y3&&y1!=y3))){
						System.out.print("true");
					}
					else{
						System.out.print("false");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>3) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}
class get7 {
	public void get8(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k3=0;
		double k4=0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double x4 = 0;
		double y4 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==4&&flag1==3) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					int ik=0;
					int kl=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char gj = a.charAt(k);
						if(gj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(ik=m;ik<a.length();ik++)
					{
						char u = a.charAt(ik);
						if(u==' ') {
							String gk = a.substring(m+1,ik);
							y3=Double.parseDouble(gk);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(kl=ik;kl<a.length();kl++)
					{
						char ui = a.charAt(kl);
						if(ui==',') {
							String uk = a.substring(ik+1,kl);
							x4=Double.parseDouble(uk);
							//System.out.println(x4);
							String ab = a.substring(kl+1,a.length());
							y4=Double.parseDouble(ab);
							//System.out.println(y4);
							break;
						}
					}
					k3=(y1-y2)/(x1-x2);
					k4=(y4-y3)/(x4-x3);
					if((x1==x2&&y1==y2)||(x3==x4&&y3==y4)) {
						System.out.print("points coincide");
					}
					else if(k3==k4||(x1==x2&&x3==x4&&y1!=y2&&y3!=y4)) {
						System.out.print("true");
					}
					else{
						System.out.print("false");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>4) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}

class get9 {
	public void get10(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k5=0;
		double k6=0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double x4 = 0;
		double y4 = 0;
		String pattern = "(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\ )(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?(\\.\\d+)?(\\,)(\\+|-)?(0|[1-9]\\d*)(\\.\\d*[1-9])?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==4&&flag1==3) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					int ik=0;
					int kl=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char gj = a.charAt(k);
						if(gj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(ik=m;ik<a.length();ik++)
					{
						char u = a.charAt(ik);
						if(u==' ') {
							String gk = a.substring(m+1,ik);
							y3=Double.parseDouble(gk);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(kl=ik;kl<a.length();kl++)
					{
						char ui = a.charAt(kl);
						if(ui==',') {
							String uk = a.substring(ik+1,kl);
							x4=Double.parseDouble(uk);
							//System.out.println(x4);
							String ab = a.substring(kl+1,a.length());
							y4=Double.parseDouble(ab);
							//System.out.println(y4);
							break;
						}
					}
					k5=(y1-y2)/(x1-x2);
					k6=(y4-y3)/(x4-x3);
					if((x1==x2&&y1==y2)||(x3==x4&&y3==y4)) {
						System.out.print("points coincide");
					}
					else if(k5==k6) {
						System.out.print("is parallel lines,have no intersection point");
					}
					else if(k5!=k6) {
						double X=(y3*x4*x2-y4*x3*x2-y3*x4*x1+y4*x3*x1-y1*x2*x4+y2*x1*x4+y1*x2*x3-y2*x1*x3)/(x4*y2-x4*y1-x3*y2+x3*y1-x2*y4+x2*y3+x1*y4-x1*y3);
						double Y=((-y3*x4*y2+y4*x3*y2+y3*x4*y1-y4*x3*y1+y1*x2*y4-y1*x2*y3-y2*x1*y4+y2*x1*y3)/(y4*x2-y4*x1-y3*x2+x1*y3-y2*x4+y2*x3+y1*x4-y1*x3));
						if((X>min(x1,x2)&&X<max(x1,x2)&&Y>min(y1,y2)&&Y<max(y1,y2))||(X>min(x3,x4)&&X<max(x3,x4)&&Y>min(y3,y4)&&Y<max(y3,y4))) {
						    System.out.print(X+","+Y+" true");
						}
						else {
							System.out.print(X+","+Y+" false");
						}
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>4) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
	public double max(double a,double b) {
		if(a>b) {
		return a;
		}
		else {
		return b;
		}
	}
	public double min(double a,double b) {
		if(a>b) {
		return b;
		}
		else {
		return a;
		}
	}
}

  

 本题中属于7-1的升级版,在上一题的基础上,我们需要对提取的数字进行更为复杂的计算,同时需要提取的数字也由4个变为了至多12个。本题要求实现5个不同的功能,因此我们需要用到switch函数。经过上题,我们依然需要把正则表达式放在函数最前端。在判断输入数据满足正则表达式后,我们先将String的第一位数字提取出来,用来作为switch的判断条件,由此,功能的选择就实现了。而在提取数字时,我们所采用的方法将沿用上题的方法,当然相应的正则表达式和' '及','的个数判断也会相应改变。在这里将不再赘述数字的提取。在本题中,我们会用到的公式有点到另外两点构成的直线的垂直距离:Math.abs((y3-y2)*x1+(x2-x3)*y1+x3*y2-y3*x2)/Math.sqrt((y3-y2)*(y3-y2) +(x3-x2)*(x3-x2));还有四点交点公式:

double X=(y3*x4*x2-y4*x3*x2-y3*x4*x1+y4*x3*x1-y1*x2*x4+y2*x1*x4+y1*x2*x3-y2*x1*x3)/(x4*y2-x4*y1-x3*y2+x3*y1-x2*y4+x2*y3+x1*y4-x1*y3);
double Y=((-y3*x4*y2+y4*x3*y2+y3*x4*y1-y4*x3*y1+y1*x2*y4-y1*x2*y3-y2*x1*y4+y2*x1*y3)/(y4*x2-y4*x1-y3*x2+x1*y3-y2*x4+y2*x3+y1*x4-y1*x3));

在进行功能5中的交点是否在线段上时,我们需要构建函数

public double max(double a,double b)
public double min(double a,double b)进行判断

4.(三角形的计算-7-3)第三次作业

 

 

 

 源码如下:

import java.util.Scanner;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		char ty  = str.charAt(0);
		if(ty=='1'||ty=='2'||ty=='3'||ty=='4'||ty=='5') {
		String wei = str.substring(2,str.length());
		switch(ty) {
		case '1':
			get x = new get();
			x.get1(wei);
			break;
		case '2':
			get3 c = new get3();
			c.get4(wei);
			break;
		case '3':
			get5 v = new get5();
			v.get6(wei);
			break;
		case '4':
			get7 u = new get7();
			u.get8(wei);
			break;
		case '5':
			get9 we = new get9();
			we.get10(wei);	
			break;
		}
		}
		else {
			System.out.print("Wrong Format");
		}
	}

}
class get {
	public void get1(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k1 = 0;
		double k2 = 0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double dis1=0;
		double dis2=0;
		double dis3=0;
		int flag2=0;
		int flag3=0;
		double l1=0;
		double l2=0;
		double l3=0;
		String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==3&&flag1==2) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char e = a.charAt(k);
						if(e==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							String y = a.substring(m+1,a.length());
							y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					k1=(y1-y2)/(x1-x2);
					k2=(y3-y2)/(x3-x2);
					l1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
					l2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
					l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
					if((l1+l2>l3&&l1+l3>l2&&l3+l2>l1)&&(Math.abs(l1-l2)<l3&&Math.abs(l1-l3)<l2&&Math.abs(l3-l2)<l1)){
						dis1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
						dis2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
						dis3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
						if(Math.abs(dis1-dis2)<=0.0001) {
							flag2++;
						}
						if(Math.abs(dis1-dis3)<=0.0001) {
							flag2++;
						}
						if(Math.abs(dis3-dis2)<=0.0001) {
							flag2++;
						}
						if(flag2==3) {
							System.out.print("true true");
						}
						if(flag2<1) {
							System.out.print("false false");
						}
						if(flag2==1) {
							System.out.print("true false");
						}
					}
					else{
						System.out.print("data error");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>3) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}

class get3 {
	public void get4(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double k1=0;
		double k2=0;
		double l1=0;
		double l2=0;
		double l3=0;
		double zhou = 0;
		double S = 0;
		double X1=0;
		double Y1=0;
		String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==3&&flag1==2) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char e = a.charAt(k);
						if(e==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							String y = a.substring(m+1,a.length());
							y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					//sum = Math.abs((y3-y2)*x1+(x2-x3)*y1+x3*y2-y3*x2)/Math.sqrt((y3-y2)*(y3-y2) +(x3-x2)*(x3-x2));
					k1=(y1-y2)/(x1-x2);
					k2=(y3-y2)/(x3-x2);
					l1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
					l2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
					l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
					if((l1+l2>l3&&l1+l3>l2&&l3+l2>l1)&&(Math.abs(l1-l2)<l3&&Math.abs(l1-l3)<l2&&Math.abs(l3-l2)<l1)){
						zhou  =(l1+l2+l3);
						S=(x1*y2-x1*y3+x2*y3-x2*y1+x3*y1-x2*y2)/2;
						X1=(x1+x2+x3)/3;
						Y1=(y1+y2+y3)/3;
						output(zhou);
						System.out.print(" ");
						output(S);
						System.out.print(" ");
						output(X1);
						System.out.print(",");
						output(Y1);
					}
					else{
						System.out.print("data error");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>3) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
	 void output(double x) {
		  int num = -100;
		  String s = Double.toString(x);
		  for(int i = 0;i<s.length();i++) {
			  if(s.charAt(i)=='.') {
				  num = i;
			  }
		  }
		  int su = s.length() - num - 1;
		  if(su<6&&su>0) {
			  if(su==1) {
				  DecimalFormat df = new DecimalFormat("0.0#####"); // 保留一位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==2) {
				  DecimalFormat df = new DecimalFormat("0.00####"); // 保留两位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==3) {
				  DecimalFormat df = new DecimalFormat("0.000###"); // 保留三位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==4) {
				  DecimalFormat df = new DecimalFormat("0.0000##"); // 保留四位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==5) {
				  DecimalFormat df = new DecimalFormat("0.00000#"); // 保留五位小数
				  System.out.print(df.format(x)); 
			  }
		  }
		  else {
			  DecimalFormat df = new DecimalFormat("0.######"); 
			  System.out.print(df.format(x)); 
		  }
		}


}
class get5 {
	public void get6(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k1 = 0;
		double k2 = 0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double dis1=0;
		double dis2=0;
		double dis3=0;
		double l1=0;
		double l2=0;
		double l3=0;
		String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?[\\ ]+([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==3&&flag1==2) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char e = a.charAt(k);
						if(e==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							String y = a.substring(m+1,a.length());
							y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					k1=(y1-y2)/(x1-x2);
					k2=(y3-y2)/(x3-x2);
					l1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
					l2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
					l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
					if((l1+l2>l3&&l1+l3>l2&&l3+l2>l1)&&(Math.abs(l1-l2)<l3&&Math.abs(l1-l3)<l2&&Math.abs(l3-l2)<l1)){
						if((l1*l1+l2*l2<l3*l3)||(l1*l1+l3*l3<l2*l2)||(l3*l3+l2*l2<l1*l1)) {
							System.out.print("true false false");
						}
						else if((Math.abs(l1*l1+l2*l2-l3*l3)<=0.0001)||(Math.abs(l2*l2+l3*l3-l1*l1)<=0.0001)||(Math.abs(l1*l1+l3*l3-l1*l1)<=0.0001)) {
							System.out.print("false true false");
						}
						else if((l1*l1+l2*l2>l3*l3)||(l1*l1+l3*l3>l2*l2)||(l3*l3+l2*l2>l1*l1)) {
							System.out.print("false false true");
						}
					}
					else{
						System.out.print("data error");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>3) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
}
class get7 {
	public void get8(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k1=0;
		double k2=0;
		double k3=0;
		double k4=0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double x4 = 0;
		double y4 = 0;
		double x5 = 0;
		double y5 = 0;
		String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==5&&flag1==4) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					int ik=0;
					int kl=0;
					int ag=0;
					int gk=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char gj = a.charAt(k);
						if(gj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(ik=m;ik<a.length();ik++)
					{
						char u = a.charAt(ik);
						if(u==' ') {
							String kg = a.substring(m+1,ik);
							y3=Double.parseDouble(kg);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(kl=ik;kl<a.length();kl++)
					{
						char ui = a.charAt(kl);
						if(ui==',') {
							String qw = a.substring(ik+1,kl);
							x4=Double.parseDouble(qw);
							//System.out.println(x4);
							//String ab = a.substring(kl+1,a.length());
							//y4=Double.parseDouble(ab);
							//System.out.println(y4);
							break;
						}
					}
					for(ag=kl;ag<a.length();ag++)
					{
						char ui = a.charAt(ag);
						if(ui==' ') {
							String uk = a.substring(kl+1,ag);
							y4=Double.parseDouble(uk);
							//System.out.println(y4);
							//String ab = a.substring(kl+1,a.length());
							//y4=Double.parseDouble(ab);
							//System.out.println(y4);
							break;
						}
					}
					for(gk=ag;gk<a.length();gk++)
					{
						char ui = a.charAt(gk);
						if(ui==',') {
							String wr = a.substring(ag+1,gk);
							x5=Double.parseDouble(wr);
							//System.out.println(x5);
							String ab = a.substring(gk+1,a.length());
							y5=Double.parseDouble(ab);
							//System.out.println(y5);
							break;
						}
					}
					k1=(y3-y4)/(x3-x4);
					k2=(y5-y4)/(x5-x4);
					k3=(y2-y1)/(x2-x1);
					k4=(y5-y3)/(x5-x3); 
					double l1=Math.sqrt((x5-x3)*(x5-x3)+(y5-y3)*(y5-y3));
					double l2=Math.sqrt((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));
					double l3=Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4));
					if(x1==x2&&y1==y2) {
						System.out.print("points coincide");
					}
					else if((l1+l2>l3&&l1+l3>l2&&l3+l2>l1)&&(Math.abs(l1-l2)<l3&&Math.abs(l1-l3)<l2&&Math.abs(l3-l2)<l1)){
						if((k3*-x1+y1==k1*-x3+y3&&k1==k3)||(k3*-x1+y1==k2*-x4+y4&&k2==k3)||(k3*-x1+y1==k4*-x5+y5&&k4==k3)) {
							System.out.print("The point is on the edge of the triangle");
						}
						else if((k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1<y4)||(k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1>y3&&k3*(x5-x1)+y1>y3)) {
							System.out.print("0");
						}
						else{
							double S1=0;
							double S2=0;
							double p=(l1+l2+l3)/2;
							double S=Math.sqrt(p*(p-l1)*(p-l2)*(p-l3));
							double l4=0;
							double l5=0;
							double l6=0;
							//与x4,x5的交点
							double X1=(y4*x5*x2-y5*x4*x2-y4*x5*x1+y5*x4*x1-y1*x2*x5+y2*x1*x5+y1*x2*x4-y2*x1*x4)/(x5*y2-x5*y1-x4*y2+x4*y1-x2*y5+x2*y4+x1*y5-x1*y4);
							double Y1=((-y4*x5*y2+y5*x4*y2+y4*x5*y1-y5*x4*y1+y1*x2*y5-y1*x2*y4-y2*x1*y5+y2*x1*y4)/(y5*x2-y5*x1-y4*x2+x1*y4-y2*x5+y2*x4+y1*x5-y1*x4));
							//与x3,x5的交点
							double X2=(y3*x5*x2-y5*x3*x2-y3*x5*x1+y5*x3*x1-y1*x2*x5+y2*x1*x5+y1*x2*x3-y2*x1*x3)/(x5*y2-x5*y1-x3*y2+x3*y1-x2*y5+x2*y3+x1*y5-x1*y3);
							double Y2=((-y3*x5*y2+y5*x3*y2+y3*x5*y1-y5*x3*y1+y1*x2*y5-y1*x2*y3-y2*x1*y5+y2*x1*y3)/(y5*x2-y5*x1-y3*x2+x1*y3-y2*x5+y2*x3+y1*x5-y1*x3));
							//与x3,x4的交点
							double X3=(y3*x4*x2-y4*x3*x2-y3*x4*x1+y4*x3*x1-y1*x2*x4+y2*x1*x4+y1*x2*x3-y2*x1*x3)/(x4*y2-x4*y1-x3*y2+x3*y1-x2*y4+x2*y3+x1*y4-x1*y3);
							double Y3=((-y3*x4*y2+y4*x3*y2+y3*x4*y1-y4*x3*y1+y1*x2*y4-y1*x2*y3-y2*x1*y4+y2*x1*y3)/(y4*x2-y4*x1-y3*x2+x1*y3-y2*x4+y2*x3+y1*x4-y1*x3));
							//过点x3
							if((k3*(x3-x1)+y1==y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1==y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1<y5)) {
								System.out.print("1");
							}
							//过点x4
							if((k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1==y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1==y4&&k3*(x5-x1)+y1<y5)) {
								System.out.print("1");
							}
							//过点x5
							if((k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1==y5)||(k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1==y5)) {
								System.out.print("1");
							}
							//x3与x4,x5异号或者x3=0;x4与x5异号
							if((k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1<y5)||(k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1>y5)) {
								l4=Math.sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2));
								l5=Math.sqrt((X3-x3)*(X3-x3)+(Y3-y3)*(Y3-y3));
								l6=Math.sqrt((X2-x3)*(X2-x3)+(Y2-y3)*(Y2-y3));
								double p2=(l4+l5+l6)/2;
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								//S1=(x3*Y2-x3*Y3+X2*Y3-X2*y3+X3*y3-X2*Y2)/2;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
								}
							}
							//x4与x3,x5异号或者x4=0;x3与x5异号
							if((k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1<y5)) {
								l4=Math.sqrt((X3-X1)*(X3-X1)+(Y3-Y1)*(Y3-Y1));
								l5=Math.sqrt((X3-x4)*(X3-x4)+(Y3-y4)*(Y3-y4));
								l6=Math.sqrt((X1-x4)*(X1-x4)+(Y1-y4)*(Y1-y4));
								double p3=(l4+l5+l6)/2;
								System.out.println(X1);
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
								}
							}
							//x5与x3,x4异号或者x5=0;x4与x3异号
							if((k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1<5)) {
								S1=(x5*Y1-x5*Y2+X1*Y2-X1*y5+X2*y5-X1*Y1)/2;
								l4=Math.sqrt((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1));
								l5=Math.sqrt((X2-x5)*(X2-x5)+(Y2-y5)*(Y2-y5));
								l6=Math.sqrt((X1-x5)*(X1-x5)+(Y1-y5)*(Y1-y5));
								double p1=(l4+l5+l6)/2;
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
								}
							}
							if((k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1==y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1==y4&&k3*(x5-x1)+y1<y5)) {
								l4=Math.sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2));
								l5=Math.sqrt((X3-x3)*(X3-x3)+(Y3-y3)*(Y3-y3));
								l6=Math.sqrt((X2-x3)*(X2-x3)+(Y2-y3)*(Y2-y3));
								double p3=(l4+l5+l6)/2;
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
									}
								
							}
							if((k3*(x3-x1)+y1==y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1>y5)||(k3*(x3-x1)+y1==y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1<y5)) {
								l4=Math.sqrt((X3-X1)*(X3-X1)+(Y3-Y1)*(Y3-Y1));
								l5=Math.sqrt((X3-x4)*(X3-x4)+(Y3-y4)*(Y3-y4));
								l6=Math.sqrt((X1-x4)*(X1-x4)+(Y1-y4)*(Y1-y4));
								double p3=(l4+l5+l6)/2;
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
									}
								
							}
							if((k3*(x3-x1)+y1<y3&&k3*(x4-x1)+y1>y4&&k3*(x5-x1)+y1==y5)||(k3*(x3-x1)+y1>y3&&k3*(x4-x1)+y1<y4&&k3*(x5-x1)+y1==y5)) {
								l4=Math.sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2));
								l5=Math.sqrt((X3-x3)*(X3-x3)+(Y3-y3)*(Y3-y3));
								l6=Math.sqrt((X2-x3)*(X2-x3)+(Y2-y3)*(Y2-y3));
								double p3=(l4+l5+l6)/2;
								S1=Math.sqrt((l4+l5+l6)*(l4+l5-l6)*(l4+l6-l5)*(l5+l6-l4))/4;
								S2=S-S1;
								if(S1>S2) {
									System.out.print("2 ");
									output(S2);
									System.out.print(" ");
									output(S1);
								}
								if(S2>S1) {
									System.out.print("2 ");
									output(S1);
									System.out.print(" ");
									output(S2);
									}
								
							}
						}
						}
					else{
						System.out.print("data error");
					}
					}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>5) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
	void output(double x) {
		  int num = -100;
		  String s = Double.toString(x);
		  for(int i = 0;i<s.length();i++) {
			  if(s.charAt(i)=='.') {
				  num = i;
			  }
		  }
		  int su = s.length() - num - 1;
		  if(su<6&&su>0) {
			  if(su==1) {
				  DecimalFormat df = new DecimalFormat("0.0#####"); // 保留一位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==2) {
				  DecimalFormat df = new DecimalFormat("0.00####"); // 保留两位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==3) {
				  DecimalFormat df = new DecimalFormat("0.000###"); // 保留三位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==4) {
				  DecimalFormat df = new DecimalFormat("0.0000##"); // 保留四位小数
				  System.out.print(df.format(x)); 
			  }
			  if(su==5) {
				  DecimalFormat df = new DecimalFormat("0.00000#"); // 保留五位小数
				  System.out.print(df.format(x)); 
			  }
		  }
		  else {
			  DecimalFormat df = new DecimalFormat("0.######"); 
			  System.out.print(df.format(x)); 
		  }
		}

}

class get9 {
	public void get10(String a) {
		int i = 0;
		int flag = 0;
		int flag1 = 0;
		double k5=0;
		double k6=0;
		double sum=0;
		double x1 = 0;
		double y1 = 0;
		double x2 = 0;
		double y2 = 0;
		double x3 = 0;
		double y3 = 0;
		double x4 = 0;
		double y4 = 0;
		double l1=0;
		double l2=0;
		double l3=0;
		String pattern = "([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?\\ +([+\\-]?\\d+)(\\.\\d+)?\\,+([+\\-]?\\d+)(\\.\\d+)?";

		//Pattern r = Pattern.compile(pattern);
		//Matcher m = r.matcher(a);
		//System.out.println(m.matches());
		for(i=0;i<a.length();i++) {
			char b = a.charAt(i);
			char t = a.charAt(i);
			if(b==',') {
				flag++;
			}
			if(t==' ') {
				flag1++;
			}
		}
		if(flag==4&&flag1==3) {
			for(i=0;i<a.length();i++) {
				char c = a.charAt(i);
				if(a.matches(pattern)){
					int j=0;
					int k=0;
					int l=0;
					int m=0;
					int ik=0;
					int kl=0;
					for(i=0;i<a.length();i++) {
						char d = a.charAt(i);
						if(d==',')
						{
							String b = a.substring(0,i);
							x1=Double.parseDouble(b);
							//System.out.println(x1);
							break;
							}
						}
					for(j=i;j<a.length();j++)
					{
						char e = a.charAt(j);
						if(e==' ') {
							String d = a.substring(i+1,j);
							y1=Double.parseDouble(d);
							//System.out.println(y1);
							break;
						}
						}
					for(k=j;k<a.length();k++)
					{
						char gj = a.charAt(k);
						if(gj==',') {
							String f = a.substring(j+1,k);
							x2=Double.parseDouble(f);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
						}
					for(l=k;l<a.length();l++)
					{
						char q = a.charAt(l);
						if(q==' ') {
							String p = a.substring(k+1,l);
							y2=Double.parseDouble(p);
							//System.out.println(x2);
							//System.out.println(y2);
							break;
						}
					}
					for(m=l;m<a.length();m++)
					{
						char r = a.charAt(m);
						if(r==',') {
							String g = a.substring(l+1,m);
							x3=Double.parseDouble(g);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(ik=m;ik<a.length();ik++)
					{
						char u = a.charAt(ik);
						if(u==' ') {
							String gk = a.substring(m+1,ik);
							y3=Double.parseDouble(gk);
							//System.out.println(x3);
							//String y = a.substring(m+1,a.length());
							//y3=Double.parseDouble(y);
							//System.out.println(y3);
							break;
						}
					}
					for(kl=ik;kl<a.length();kl++)
					{
						char ui = a.charAt(kl);
						if(ui==',') {
							String uk = a.substring(ik+1,kl);
							x4=Double.parseDouble(uk);
							//System.out.println(x4);
							String ab = a.substring(kl+1,a.length());
							y4=Double.parseDouble(ab);
							//System.out.println(y4);
							break;
						}
					}
					l1=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
					l2=Math.sqrt((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));
					l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
					double k1=(y2-y3)/(x2-x3);
					double k2=(y3-y4)/(x3-x4);
					double k3=(y2-y4)/(x2-x4);
					double x5=(x2+x3+x4)/3;
					double y5=(y2+y3+y4)/3;
					double k4=(y1-y5)/(x1-x5);
					//x23
					double X1=(y2*x3*x5-y3*x2*x5-y2*x3*x1+y3*x2*x1-y1*x5*x3+y5*x1*x3+y1*x5*x2-y5*x1*x2)/(x3*y5-x3*y1-x2*y5+x2*y1-x5*y3+x5*y2+x1*y3-x1*y2);
					double Y1=((-y2*x3*y5+y3*x2*y5+y2*x3*y1-y3*x2*y1+y1*x5*y3-y1*x5*y2-y5*x1*y3+y5*x1*y2)/(y3*x5-y3*x1-y2*x5+x1*y2-y5*x3+y5*x2+y1*x3-y1*x2));
					//x24
					double X2=(y2*x4*x5-y4*x2*x5-y2*x4*x1+y4*x2*x1-y1*x5*x4+y5*x1*x4+y1*x5*x2-y5*x1*x2)/(x4*y5-x4*y1-x2*y5+x2*y1-x5*y4+x5*y2+x1*y4-x1*y2);
					double Y2=((-y2*x4*y5+y4*x2*y5+y2*x4*y1-y4*x2*y1+y1*x5*y4-y1*x5*y2-y5*x1*y4+y5*x1*y2)/(y4*x5-y4*x1-y2*x5+x1*y2-y5*x4+y5*x2+y1*x4-y1*x2));
					//x34
					double X3=(y3*x4*x5-y4*x3*x5-y3*x4*x1+y4*x3*x1-y1*x5*x4+y5*x1*x4+y1*x5*x3-y5*x1*x3)/(x4*y5-x4*y1-x3*y5+x3*y1-x5*y4+x5*y3+x1*y4-x1*y3);
					double Y3=((-y3*x4*y5+y4*x3*y5+y3*x4*y1-y4*x3*y1+y1*x5*y4-y1*x5*y3-y5*x1*y4+y5*x1*y3)/(y4*x5-y4*x1-y3*x5+x1*y3-y5*x4+y5*x3+y1*x4-y1*x3));
					if((l1+l2>l3&&l1+l3>l2&&l3+l2>l1)&&(Math.abs(l1-l2)<l3&&Math.abs(l1-l3)<l2&&Math.abs(l3-l2)<l1)){
						if((k1*(x1-x2)+y2==y1&&x1<=max(x2,x3)&&x1>=min(x2,x3)&&y1<=max(y2,y3)&&y1>=min(y2,y3))||(k2*(x1-x3)+y3==y1&&x1<=max(x4,x3)&&x1>=min(x4,x3)&&y1<=max(y4,y3)&&y1>=min(y4,y3))||(k3*(x1-x2)+y2==y1&&x1<=max(x2,x4)&&x1>=min(x2,x4)&&y1<=max(y2,y4)&&y1>=min(y2,y4))) {
							System.out.print("on the triangle");
						}
						//以x2与x3,4异号
						if((k4*(x2-x1)+y1>y2&&k4*(x3-x1)+y1<y3&&k4*(x4-x1)+y1<y4)||(k4*(x2-x1)+y1<y2&&k4*(x3-x1)+y1>y3&&k4*(x4-x1)+y1>y4)) {
							if((X1==X2)) {
								if((Y1>y1&&Y2>y1)||(Y1<y1&&Y2<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y1>y1&&Y2<y1)||(Y1<y1&&Y2>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X1>x1&&X2>x1)||(X1<x1&&X2<x1)) {
									System.out.print("outof the triangle");
								}
								if((X1>x1&&X2<x1)||(X1<x1&&X2>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
						//以x3与x2,4异号
						if((k4*(x2-x1)+y1>y2&&k4*(x3-x1)+y1<y3&&k4*(x4-x1)+y1>y4)||(k4*(x2-x1)+y1<y2&&k4*(x3-x1)+y1>y3&&k4*(x4-x1)+y1<y4)) {
							if((X1==X3)) {
								if((Y1>y1&&Y3>y1)||(Y1<y1&&Y3<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y1>y1&&Y3<y1)||(Y1<y1&&Y3>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X1>x1&&X3>x1)||(X1<x1&&X3<x1)) {
									System.out.print("outof the triangle");
								}
								if((X1>x1&&X3<x1)||(X1<x1&&X3>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
						//以x4与x2,3异号
						if((k4*(x2-x1)+y1>y2&&k4*(x3-x1)+y1>y3&&k4*(x4-x1)+y1<y4)||(k4*(x2-x1)+y1<y2&&k4*(x3-x1)+y1<y3&&k4*(x4-x1)+y1>y4)) {
							if((X3==X2)) {
								if((Y3>y1&&Y2>y1)||(Y3<y1&&Y2<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y3>y1&&Y2<y1)||(Y3<y1&&Y2>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X3>x1&&X2>x1)||(X3<x1&&X2<x1)) {
									System.out.print("outof the triangle");
								}
								if((X3>x1&&X2<x1)||(X3<x1&&X2>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
						//过点x2
						if((k4*(x2-x1)+y1==y2&&k4*(x3-x1)+y1<y3&&k4*(x4-x1)+y1>y4)||(k4*(x2-x1)+y1==y2&&k4*(x3-x1)+y1>y3&&k4*(x4-x1)+y1<y4)) {
							if((X2==X3)) {
								if((Y3>y1&&Y2>y1)||(Y3<y1&&Y2<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y3>y1&&Y2<y1)||(Y3<y1&&Y2>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X3>x1&&X2>x1)||(X3<x1&&X2<x1)) {
									System.out.print("outof the triangle");
								}
								if((X3>x1&&X2<x1)||(X3<x1&&X2>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
						//过点x3
						if((k4*(x2-x1)+y1>y2&&k4*(x3-x1)+y1==y3&&k4*(x4-x1)+y1<y4)||(k4*(x2-x1)+y1<y2&&k4*(x3-x1)+y1==y3&&k4*(x4-x1)+y1>y4)) {
							if((X2==X3)) {
								if((Y3>y1&&Y2>y1)||(Y3<y1&&Y2<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y3>y1&&Y2<y1)||(Y3<y1&&Y2>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X3>x1&&X2>x1)||(X3<x1&&X2<x1)) {
									System.out.print("outof the triangle");
								}
								if((X3>x1&&X2<x1)||(X3<x1&&X2>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
						//过点x4
						if((k4*(x2-x1)+y1>y2&&k4*(x3-x1)+y1<y3&&k4*(x4-x1)+y1==y4)||(k4*(x2-x1)+y1<y2&&k4*(x3-x1)+y1>y3&&k4*(x4-x1)+y1==y4)) {
							if((X2==X1)) {
								if((Y1>y1&&Y2>y1)||(Y1<y1&&Y2<y1)) {
									System.out.print("outof the triangle");
								}
								if((Y1>y1&&Y2<y1)||(Y1<y1&&Y2>y1)) {
									System.out.print("in the triangle");
								}
							}
							else {
								if((X1>x1&&X2>x1)||(X1<x1&&X2<x1)) {
									System.out.print("outof the triangle");
								}
								if((X1>x1&&X2<x1)||(X1<x1&&X2>x1)) {
									System.out.print("in the triangle");
								}
							}
						}
					}
					else{
						System.out.print("data error");
					}
				}
				else{
					System.out.print("Wrong Format");}
				break;
				}
		}
		else if(flag>4) {
			System.out.print("wrong number of points");
		}
		else{
			System.out.print("Wrong Format");
		}
	}
	public double max(double a,double b) {
		if(a>b) {
		return a;
		}
		else {
		return b;
		}
	}
	public double min(double a,double b) {
		if(a>b) {
		return b;
		}
		else {
		return a;
		}
	}
}

  

类似的,本题作为第三次作业中最难的一题,他在第一题,第二题的基础上进一步复杂化了数学计算,当然本题也运用到了前两题的公式。本题前端的处理与第二题大同小异,主要区别就在于功能的实现上。

首先,我们需要通过给定的点计算出三条线段的长度,如果线段长度满足构成三角形的基本需求,则运算继续,否在将直接退出计算。

功能一:我们依次判断两条边的长度是否相等,相等则标识符flag++,需要注意的是flag为2或3时即可判断三角形为等边三角形。

功能二:先求出三边长度,在通过周长公式zhou  =(l1+l2+l3),面积公式S=(x1*y2-x1*y3+x2*y3-x2*y1+x3*y1-x2*y2)/2算出周长及面积。

功能三:先求出三边长度,再判断随意两边的平方和与第三边的平方的大小关系,如果随意两边的平方和大于第三边的平方的大小,则判断其为锐角三角形;如果随意两边的平方和等于第三边的平方的大小,则判断其为直角三角形;如果随意两边的平方和小于第三边的平方的大小,则判断其为钝角三角形;

功能四:以前两点构成直线,先讨论直线的斜率是否存在,再讨论交点的个数以及交点的位置,如一个交点时直线过三角形端点,但过端点不一定只有一个交点。判断完后,用交点公式求出交点,再求出三角形的三边长度及交点三角形的三边长,分别求出面积,再利用max()函数求解两部分图像的面积,按大小输出

功能五:首先判断射线斜率是否存在,再讨论交点个数。大致同四。

3.踩坑心得

1.7-2(第二次作业)

需要理解”采用奇校验”的具体意思,我一开始单纯的认为奇校验就是第二位数恒为一,但是此时最后一个测试点始终无法通过,在我查阅资料后,我发现奇校验是指八个数中1的个数,但是光是这样还不够,还必须要使八位数求出的校验结果与第二位数相比较,只有当这两个数不相同时,才能输出结果

2.7-1(第三次作业)

在刚看到题目时,我就对输入里的',''十分头疼,因为我之前从未接触过这类输入,我一开始始终将输入当作int型的,结果显而易见,就是没有结果,但是单纯地提取一位数也行不通,特别是对于'+3.5'这类数时

3.7-2(第三次作业)

(1).求斜率时,需要考虑两点横坐标相同地情况

(2)功能四题目描述的”交叉点是否在两条线段之内“是对两线段分开讨论的,并不是需要交叉点既位于线段1里,同时又位于线段2里,这两个要求满足任意一个即可

4.7-3(第三次作业)

(1)功能一证明两线段相等时,不能使用”l1==l2“,而应该使用"Math.abs(l1-l2)<=0.0001"。

(2)计算三角形与线段或射线的关系特别需要考虑直线或射线的斜率不存在的情况

(3)注意输出要求,1.0输出1.0而非1.000000

4.改进建议

(1)重复代码较多,应该尽量删减重复代码

(2)代码的功能较为杂乱,没有专门用来计算某一量的函数,比如计算三边周长时,对于点的不同,需要将整个周长公式重新写一遍,较为浪费时间。

5.总结

(1)这三次作业对于我来说算是不小的挑战,尤其是后两次,让我第一次认识到了实例测试点全对不一定可以得满分,面向对象不仅仅要面对正常的数据,还要满足使用者奇奇怪怪的输入。而习惯了正常的输入的我常常很难想到”错误输入“或者”格式错误“是怎么个错误法

(2)学会了如何控制输出位数,无论计算结果是无穷小数还是1.0,都能够按要求输出,即无穷小数保留六位,1.0输出1.0

(3)方法的功能应该拆分开来,由某一特定类或方法执行某一特定的功能是最佳选择

(4)希望老师加强课上互动

posted on 2022-04-09 20:30  叽里咕噜帅  阅读(36)  评论(0)    收藏  举报

导航