首页 > 其他分享 >PTA题目集阶段总结1

PTA题目集阶段总结1

时间:2022-10-02 21:34:19浏览次数:59  
标签:总结 输出 题目 String Double 样例 parseDouble PTA split

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

相关文章