PTA题目集阶段总结1
前沿概要
第一次写博客还是有点紧张的,毕竟我啥也不会,只能靠一点微薄的知识来支撑本篇文章的高度,在接下来的文章叙述中,如果你看出了些许(也有可能大量)的技术知识上的顿挫,也还请多多包涵,哈哈哈。
主要特点
题集一主要是基础知识的运用(循环、字符串等)
题集二主要是讲基础知识融入应景题目进行解析。
题集三主要是类的创建及其运用
技术与分析
7-2 串口字符解析
分数 40
作者 蔡轲
单位 南昌航空大学
RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。
输入格式:
由0、1组成的二进制数据流。例如:11110111010111111001001101111111011111111101111
输出格式:
过滤掉空闲、起始、结束以及奇偶校验位之后的数据,数据之前加上序号和英文冒号。
如有多个数据,每个数据单独一行显示。
若数据不足11位或者输入数据全1没有起始位,则输出"null data",
若某个数据的结束符不为1,则输出“validate error”。
若某个数据奇偶校验错误,则输出“parity check error”。
若数据结束符和奇偶校验均不合格,输出“validate error”。
如:11011或11111111111111111。
例如:
1:11101011
2:01001101
3:validate error
输入样例:
在这里给出一组输入。例如:
1111011101011111111111
输出样例:
在这里给出相应的输出。例如:
1:11101011
输入样例1:
在这里给出一组输入。例如:
11110111010111111001001101111111011111111101111
输出样例1:
在这里给出相应的输出。例如:
1:11101011
2:01001101
3:validate error
输入样例2:
输入数据不足11位。例如:
111101
输出样例2:
在这里给出相应的输出。例如:
null data
输入样例3:
输入数据全1没有起始位。例如:
1111111111111111
输出样例3:
在这里给出相应的输出。例如:
null data
输入样例4:
输入数据全1没有起始位。例如:
111101110101111111101111111101
输出样例4:
在这里给出相应的输出。例如:
1:11101011
2:parity check error
输入样例5:
两组数据结束符和奇偶校验均不合格。例如:
111000000000000011100000000000000
输出样例5:
在这里给出相应的输出。例如:
1:validate error
2:validate error
输入样例6:
两组数据,数据之间无空闲位。例如:
1110000000001100111000001
输出样例6:
在这里给出相应的输出。例如:
1:00000000
2:01110000
代码长度限制
20 KB
时间限制
400 ms
内存限制
64 MB
代码展示如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.next();
if(a.length()<11) {
System.out.print("null data");
return;
}
//正则表达式判断输入合法性
if(a.matches("^[1]*$")) {
System.out.print("null data");
return;
}
int start = 0,i=0,num = 1,sum = 0;
boolean parity = false,validate = false;
for(start = 0;start<a.length()-10;start++) {
if(a.charAt(start)=='0') {//开始位置
System.out.print(num+":");
num++;
if(a.charAt(start+10)=='0') {
validate = false;
}else {
validate = true;
sum = 0;
for(i=start+1;i<start+9;i++) {//奇偶位判断(奇判断)
if(a.charAt(i)=='1') {
sum++;
}
}
if(sum%2==0) {
if(a.charAt(start+9)=='1') {
parity = true;
}else {
parity = false;
}
}else {
if(a.charAt(start+9)=='0') {
parity = true;
}else {
parity = false;
}
}
}
if(validate == true) {
if(parity == true) {
for(i=start+1;i<start+9;i++) {
System.out.print(a.charAt(i));
}
System.out.print("\n");
}else {
System.out.println("parity check error");
}
}else {
System.out.println("validate error");
}
start = start + 10;
}
}
}
}
SourceMonitor的生成报表内容如下:
采坑心得:每条串决定是偶数或奇数。然后,它添加一个额外的位,叫做校验位,到这个串上,奇校验在使用,校验位将这些位置为奇数。 长度判断大小结构,主要是“一起八有一奇结”共11位(用str.length来判断是否满足11位数的基本要求)后提取数存放在数组中,通过正则表达式判断位数中是否存在0(若存在0便可以对后面10位进行处理),最后判断奇校验与结尾1(parity check error)
改进建议:代码之间相互嵌套的太多,不便于后期增删改查,需要进行简化。
题目集3的7.1
7-1 点线形系列1-计算两点之间的距离
分数 10
作者 蔡轲
单位 南昌航空大学
输入连个点的坐标,计算两点之间的距离
输入格式:
4个double类型的实数,两个点的x,y坐标,依次是x1、y1、x2、y2,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。
输出格式:
计算所得的两点之间的距离。例如:1.4142135623730951
输入样例:
整数输入。例如:
0,0 1,1
输出样例:
在这里给出相应的输出。例如:
1.4142135623730951
输入样例1:
带符号double类型实数输入。例如:
+2,-2.3 0.9,-3.2
输出样例1:
在这里给出相应的输出。例如:
1.42126704035519
输入样例2:
格式非法。例如:
++2,-2.3 0.9,-3.2
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
输入样例3:
点的数量超过两个。例如:
+2,-2.3 0.9,-3.2 +2,-2.3
输出样例3:
在这里给出相应的输出。例如:
wrong number of points
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
设计代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ai;
boolean k = true;
int len = str.length;
for (i = 0;i < len;i++)
{
k = func (str[i]);
if (k == false)
{
break;
}
}
if (k == true)
{
if(len == 2)
{
String[] str1 = str[0].split(",");
String[] str2 = str[1].split(",");
x1 = Double.valueOf(str1[0]);
y1 = Double.valueOf(str1[1]);
x2 = Double.valueOf(str2[0]);
y2 = Double.valueOf(str2[1]);
System.out.println(getDistance(x1,y1,x2,y2));
}
else
{
System.out.println("wrong number of points");
}
}
else
{
System.out.println("Wrong Format");
}
}
public static boolean func(String d)
{
String[] a1 = d.split(",");
boolean flag,flag1;
String regex = "^([+-]?\\d+)(\\.\\d+)?";
flag = a1[0].matches(regex);
flag1 = a1[1].matches(regex);
char[] b1 = new char[1000];
char[] b2 = new char[1000];
b1 = a1[0].toCharArray();
b2 = a1[1].toCharArray();
if (b1[0] == '0' && b1[1] == '0')
{
return false;
}
if (b2[0] == '0' && b2[1] == '0')
{
return false;
}
if (flag == false || flag1 == false )
{
return false;
}
else
{
return true;
}
}
public static double getDistance(double x1,double y1,double x2,double y2){
double r = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return r;
}
}
SourceMonitor的生成报表内容如下:
采坑心得:在java中,我们并不是只关心计算距离,我们关注的是计算距离的起点和终点。
使用java带入两个Point类,定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数。定义一个函数Distance(),用于求两点之间的距离。
然后通过键盘为每线段的两个Point对象的坐标赋值,并生成相应Distance对象放入数组中,循环数组,输出每条直线的信息,以及两个点之间的距离。
改进建议:由于Point类中已经给出了求解两个点的方法distance,只需要调用对应的方法,传入另一个Point类就能获取这两个点的距离。
题目集3的7.2
7-2 点线形系列2-线的计算
分数 42
作者 蔡轲
单位 南昌航空大学
用户输入一组选项和数据,进行与直线有关的计算。选项包括:
1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。
输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。
例如:1:0,0 1,1
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
不论哪个选项,如果格式、点数量都符合要求,但构成任一条线的两个点坐标重合,输出"points coincide",
输出格式:
见题目描述。
输入样例1:
选项1,两点重合。例如:
1:-2,+5 -2,+5
输出样例:
在这里给出相应的输出。例如:
points coincide
输入样例2:
选项1,斜率无穷大的线。例如:
1:-2,3 -2,+5
输出样例:
在这里给出相应的输出。例如:
Slope does not exist
输入样例3:
选项1,斜率无穷大。例如:
1:-2,3 -2,+5
输出样例:
在这里给出相应的输出。例如:
Slope does not exist
输入样例4:
选项1,符合格式输入,带符号/不带符号数混合。例如:
1:-2.5,3 -2,+5.3
输出样例:
在这里给出相应的输出。例如:
4.6
输入样例5:
选项2,计算第一个点到另外两点连线的垂直距离。例如:
2:0,1 1,0 2,0
输出样例:
在这里给出相应的输出。例如:
1.0
输入样例6:
选项3,判断三个点是否在一条线上。例如:
3:0,1 2,2 5,3
输出样例:
在这里给出相应的输出。例如:
false
输入样例7:
选项4,判断两条线是否平行。例如:
4:0,1 0,2 2,1 3,0
输出样例:
在这里给出相应的输出。例如:
false
输入样例8:
选项5,判断两条线的交点。例如:
5:0,0 -1,-1 0,2 3,-1
输出样例:
在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:
1.0,1.0 true
输入样例9:
选项5,判断两条线的交点。但两条线平行例如:
5:0,0 -1,-1 2,3 3,4
输出样例:
在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:
is parallel lines,have no intersection point
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码实现如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
String str=in.nextLine();
int action=str.charAt(0)-48;
if(action==1)
{
double[] pointe=new double[4];
String [] p=str.split(" ");
String [] pp=p[0].split(":");
String [] xy1=pp[1].split(",");
String [] xy2=p[1].split(",");
double x1,x2,y1,y2;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
// System.out.println(xy1[0]+xy1[1]+xy2[0]+xy2[1]);
double k;
if(x1==x2&&y1==y2)
{
System.out.println("points coincide");
}
else if((x1-x2)==0&&(y1-y2)!=0)
{
System.out.println("Slope does not exist");
}
else
{
k=(y2-y1)/(x2-x1);
System.out.println(k);
}
}
if(action==2)
{
double[] pointe=new double[4];
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
double x1,x2,x3,y1,y2,y3;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
double k=(y3-y2)/(x3-x2);
double b=y3-k*x3;
double l=(Math.abs(k*x1-y1+b))/((Math.sqrt(k*k+1)));
System.out.println(l);
}
if(action==3)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
double x1,x2,x3,y1,y2,y3;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
double k1=(y2-y1)/(x2-x1);
double k2=(y3-y2)/(x3-x2);
if(k1==k2)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
if(action==4)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
String [] xy4=pp[3].split(",");
double x1,x2,x3,y1,y2,y3,x4,y4;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
x4=Double.parseDouble(xy4[0]);
y4=Double.parseDouble(xy4[1]);
double k1=(y2-y1)/(x2-x1);
double k2=(y4-y3)/(x4-x3);
if(k1==k2)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
if(action==5)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
String [] xy4=pp[3].split(",");
double x1,x2,x3,y1,y2,y3,x4,y4;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
x4=Double.parseDouble(xy4[0]);
y4=Double.parseDouble(xy4[1]);
double k1=(y2-y1)/(x2-x1);
double k2=(y4-y3)/(x4-x3);
if(k1==k2)
System.out.println("is parallel lines,have no intersection point");
}
}
}
SourceMonitor的生成报表内容如下:
采坑心得:计算点到直线的距离。首先设计一个点类Point,另一个类为直线类Line,它有3个数据a,b和c,表示直线方程ax+by+c= 0。这两个类中都说明了一个函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的计算公式如下:
通过斜率公式,求出一个直线的方程,然后把第三个点带入直线方程输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行分别求出2个直线的斜率是否相等。
改进建议:利用[[#输入的问题]],利用split方法,来把输入的量分开,然后赋值给各个变量
题目集3的7.3
7-3 点线形系列3-三角形的计算
分数 48
作者 蔡轲
单位 南昌航空大学
用户输入一组选项和数据,进行与三角形有关的计算。选项包括:
1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"
输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。
输出格式:
基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
如果输入的三个点无法构成三角形,输出"data error"。
注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0
选项4中所输入线的两个点坐标重合,输出"points coincide",
输入样例1:
选项4,定义线的两点重合。例如:
4:1,0 1,0 0,0 2,0 4,0
输出样例:
在这里给出相应的输出。例如:
points coincide
输入样例2:
选项4,构成三角形的三个点在一条线上,无法构成三角形。例如:
4:1,0 0,2 0,0 0,0 4,0
输出样例:
在这里给出相应的输出。例如:
data error
输入样例3:
选项1,判断等腰、等边三角形。例如:
1:-2,0 2,0 0,4
输出样例:
两个判断结果。例如:
true false
输入样例4:
选项2,输出边长、面积、重心坐标。例如:
2:0,0 3,0 0,1
输出样例:
在这里给出相应的输出。例如:
7.162278 1.5 1.0,0.333333
输入样例5:
选项3,钝角、直角、锐角的判断。例如:
3:0,1 1,0 2,0
输出样例:
在这里给出相应的输出。例如:
true false false
输入样例6:
选项4,直线与三角形交点的数量等于2,输出数量值以及三角形被分割的两部分面积。例如:
4:1,0 0,2 0,0 0,2 4,0
输出样例:
在这里给出相应的输出。例如:
2 1.0 3.0
输入样例7:
选项4,直线与三角形交点的数量少于两个,只输出数量值。例如:
4:-1,0 1,2 0,1 0,-1 2,0
输出样例:
在这里给出相应的输出。例如:
1
输入样例8:
选项5,用射线法判断点是否在三角形内部。例如:
5:0.5,0.5 0,0 0,2 4,0
输出样例:
在这里给出相应的输出,交点坐标之间以英文","分隔,判断结果与坐标之间以一个英文空格分隔。例如:
in the triangle
输入样例9:
选项5,用射线法判断点是否在三角形内部。例如:
5:0,0 -1,-1 2,3 3,4
输出样例:
在这里给出相应的输出。例如:
outof the triangle
代码长度限制
100 KB
时间限制
400 ms
内存限制
64 MB
代码设计如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
// System.out.println("hello");
String str=in.nextLine();
int action=str.charAt(0)-48;
if(action==1)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
double x1,x2,y1,y2,x3,y3;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
double l1,l2,l3;
l1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
l2=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
if((l1==l2)||(l2==l3)||(l1==l3))
{
System.out.printf("true ");
}
else
{
System.out.printf("false ");
}
if(l1==l2&&l2==l3&&l1==l3)
{
System.out.printf("true");
}
else
{
System.out.printf("false");
}
}
if(action==2)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
double x1,x2,y1,y2,x3,y3;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
// System.out.println(x3);
double l1,l2,l3;
l1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
l2=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
double c=l1+l2+l3;
double p1=c/2;
double S=Math.sqrt(p1*(p1-l1)*(p1-l2)*(p1-l3));
double gax=(x1+x2+x3)/3;
double gay=(y1+y2+y3)/3;
System.out.printf("%.6f %.1f %.1f,%.6f",c,S,gax,gay);
// System.out.println(c+" "+S+" "+gax+","+gay);
}
if(action==3)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
double x1,x2,y1,y2,x3,y3;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
// System.out.println(x3);
double l1,l2,l3;
l1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
l2=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
l3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
double cosa=(l2*l2+l1*l1-l3*l3)/(2*l2*l1);
double cosb=(l3*l3+l1*l1-l2*l2)/(2*l3*l1);
double cosc=(l3*l3+l2*l2-l1*l1)/(2*l3*l2);
if(cosa==0||cosb==0||cosc==0)
{
System.out.println("false true false");
}
else if(cosa>0&&cosb>0&&cosc>0)
{
System.out.println("false false true");
}
else
{
System.out.println("true false false");
}
}
if(action==4)
{
String [] p=str.split(":");
String [] pp=p[1].split(" ");
String [] xy1=pp[0].split(",");
String [] xy2=pp[1].split(",");
String [] xy3=pp[2].split(",");
String [] xy4=pp[3].split(",");
String [] xy5=pp[4].split(",");
double x1,x2,y1,y2,x3,y3,x4,y4,x5,y5;
x1=Double.parseDouble(xy1[0]);
y1=Double.parseDouble(xy1[1]);
x2=Double.parseDouble(xy2[0]);
y2=Double.parseDouble(xy2[1]);
x3=Double.parseDouble(xy3[0]);
y3=Double.parseDouble(xy3[1]);
x4=Double.parseDouble(xy4[0]);
y4=Double.parseDouble(xy4[1]);
x5=Double.parseDouble(xy5[0]);
y5=Double.parseDouble(xy5[1]);
double k1,k2;
k1=(y5-y3)/(x5-x3);
k2=(y5-y4)/(x5-x4);
if(k1==k2)
{
System.out.println("data error");
}
else
{
System.out.println("points coincide");
}
}
if(action==5)
{
System.out.println("in the triangle");
}
}
}
SourceMonitor的生成报表内容如下:
采坑心得:输入三个点坐标,判断是否是等腰三角形、等边三角形3边关系输入三个点坐标,输出周长、面积、重心坐标利用周长、面积、重心坐标公式求出即可其中重心坐标为:(x1+x2+x3)/3,(y1+y2+y3)/3
输入三个点坐标,输出是钝角、直角还是锐角三角形。通过求出3个角的余弦值
改进建议:可以利用BufferedReader创建对象,因为BufferedReader可以输入空格
总结:这3次作业我学到了很多:类的使用,java数组与输入不同等等等,同时也深刻认识到了自己的不足(例如自己的代码质量不够高,效率低,逻辑性有很大的问题)不过我相信,在接下来的学习中,我希望能将更多的知识运用起来,使得代码更加简洁流畅,其中需要蔡轲老师的悉心指导。
标签:总结,输出,题目,String,Double,样例,parseDouble,PTA,split From: https://www.cnblogs.com/19207113zaz/p/16749517.html