pta第二次博客
目录[*]pta第二次博客
[*]1.前言
[*]2.设计与分析
[*]第四次作业第一题
[*]第四次作业第二题
[*]第四次作业第三题
[*]第五次作业第一题
[*]第五次作业第二题
[*]期中考试第一题
[*]期中考试第二题
[*]期中考试第三题
[*]3.踩坑心得:
[*]4.改进建议
[*]5.总结
pta第二次博客
1.前言
这三次作业对正则表达式的规范使用都又较高的要求,如果正则写的不够全面会导致很多输入格式错误的问题,导致很多测试点过不去,也要求第三次作业的三角形的代码又较高的复用性,不然会导致每题都要去重构一下,会浪费大量的时间。
2.设计与分析
第四次作业第一题
1.题目:
“蛟龙号”载人深潜器是我国首台自主设计、自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。
中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录。
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一。
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平。
‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。
了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!
请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。
提示 若输入为“2012年2月”,则该行的输出为:2014。若干个连续的数字字符作为一个整体,以十进制形式相加。
输入格式:
读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过80个字符。
以"end"结束。
输出格式:
与输入行相对应的各个整数之和。
试题分析
本题的难点在于如何如何将数字从段落中提取出来,只要对pattern和Matcher有所了解就能解决。
源代码展示:
查看代码package pta41;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String S = in.nextLine();
int sum=0;
Pattern x=Pattern.compile("+");
while(!S.equals("end"))
{
sum=0;
Matcher matcher=x.matcher(S);
while(matcher.find())
{
zd n=new zd();
sum+=n.zh(matcher.group());
}
System.out.println(sum);
S=in.nextLine();
}
}
}
class zd {
int str;
public int zh(String x)
{
str=Integer.valueOf(x);
return str;
}
}SourceMonitor生成的报表内容:
类图
代码分析总结:
本次作业比较简单,代码也不多,不做分析。
第四次作业第二题
题目:
点线形系列4-凸四边形的计算
用户输入一组选项和数据,进行与四边形有关的计算。
以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。
选项包括:
1:输入四个点坐标,判断是否是四边形、平行四边形,判断结果输出true/false,结果之间以一个英文空格符分隔。
2:输入四个点坐标,判断是否是菱形、矩形、正方形,判断结果输出true/false,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
3:输入四个点坐标,判断是凹四边形(false)还是凸四边形(true),输出四边形周长、面积,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
4:输入六个点坐标,前两个点构成一条直线,后四个点构成一个四边形或三角形,输出直线与四边形(也可能是三角形)相交的交点数量。如果交点有两个,再按面积从小到大输出四边形(或三角形)被直线分割成两部分的面积(不换行)。若直线与四边形或三角形的一条边线重合,输出"The line is coincide with one of the lines"。若后四个点不符合四边形或三角形的输入,输出"not a quadrilateral or triangle"。
后四个点构成三角形的情况:假设三角形一条边上两个端点分别是x、y,边线中间有一点z,另一顶点s:
1)符合要求的输入:顶点重复或者z与xy都相邻,如x x y s、x z y s、x y x s、s x y y。此时去除冗余点,保留一个x、一个y。
2) 不符合要求的输入:z 不与xy都相邻,如z x y s、x z s y、x s z y
5:输入五个点坐标,输出第一个是否在后四个点所构成的四边形(限定为凸四边形,不考虑凹四边形)或三角形(判定方法见选项4)的内部(若是四边形输出in the quadrilateral/outof the quadrilateral,若是三角形输出in the triangle/outof the triangle)。如果点在多边形的某条边上,输出"on the triangle或者on the quadrilateral"。若后四个点不符合四边形或三角形,输出"not a quadrilateral or triangle"。
输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。
输出格式:
基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
注意:输出的数据若小数点后超过3位,只保留小数点后3位,多余部分采用四舍五入规则进到最低位。小数点后若不足3位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333,1.0按格式输出为1.0
选项1、2、3中,若四边形四个点中有重合点,输出"points coincide"。
选项4中,若前两个输入线的点重合,输出"points coincide"。
试题分析
本题主要考察大量的点与线的判断以及点与面的判断,因为四边形可以成由两个三角形共用同一条边组成,所以在写代码时可以借用三角形的代码来简化操作,运用循环来判断各种特殊情况。
源代码展示:
查看代码import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String S = in.nextLine();
if (S.charAt(1) != ':'||S.contains(", ")||S.charAt(S.length()-1)==',') {
System.out.println("Wrong Format");
return;
}
String[] str = S.split(":");
if ("1".equals(str)) {
point4 p1=new point4();
p1.quadrilateral(str,1);
System.out.println(p1.sbx +" "+p1.pxsbx);
}
if ("2".equals(str)) {
point4 p1=new point4();
p1.quadrilateral(str,1);
if(p1.sbx)
System.out.println(p1.lx +" "+p1.jx+" "+p1.zfx);
else
System.out.println("not a quadrilateral");
}
if ("3".equals(str)) {
point4 p1=new point4();
p1.quadrilateral(str,1);
if(p1.t|| p1.a)
p1.S=p1.s1+p1.s2;
else
p1.S= p1.s1-p1.s2;
String c1=String.format("%."+3+"f",p1.c);String s2=String.format("%."+3+"f", p1.S);
p1.c= Double.parseDouble(c1);p1.S= Double.parseDouble(s2);
if(p1.sbx)
System.out.println(p1.t+" "+p1.c+" "+p1.S);
else
System.out.println("not a quadrilateral");
}
if("4".equals(str))
{
case4 p2=new case4();
p2.point6(str);
System.out.print("p2.j");
}
if("5".equals(str))
{
case5 p2=new case5();
p2.point5(str);
}
}
}
class point4{
String[] l=new String;
String[] s=new String;
boolean sbx,pxsbx,jx,lx,zfx,t,a;
double x1, y1, x2, y2, x3, y3, x4, y4,k4,k5,k6,l4,l5,l6,c,S,s1,s2;
publicvoid quadrilateral(String str,int b){
l=str.split(" ");
zz x=new zz();
samepoint p=new samepoint();
point3 triangle=new point3();
sbx=false;pxsbx=false;jx=false;lx=false;zfx=false;t=false;a=false;
int i,j;
for(i=0;i<l.length;i++)
{
s=l.split(",");
if (s.length != 2) {
System.out.println("Wrong Format");
System.exit(0);
}
for(j=0;j<s.length;j++)
x.z(s);
}
if (l.length != 4) {
System.out.println("wrong number of points");
System.exit(0);
}
s = l.split(",");x1 = Double.valueOf(s);y1 = Double.valueOf(s);
s = l.split(",");x2 = Double.valueOf(s);y2 = Double.valueOf(s);
s = l.split(",");x3 = Double.valueOf(s);y3 = Double.valueOf(s);
s = l.split(",");x4 = Double.valueOf(s);y4 = Double.valueOf(s);
triangle.sjx(x1,y1,x2,y2,x3,y3);
s1= triangle.s;
k4=(y4-y1)/(x4-x1);k5=(y4-y2)/(x4-x2);k6=(y4-y3)/(x4-x3);
l4=Math.sqrt(Math.pow(x1-x4,2)+Math.pow(y1-y4,2));
l5=Math.sqrt(Math.pow(x4-x2,2)+Math.pow(y4-y2,2));
l6=Math.sqrt(Math.pow(x3-x4,2)+Math.pow(y3-y4,2));
if(b==1)
{
if(triangle.inline(x4,y4,x1,y1,x2,y2)||triangle.inline(x4,y4,x1,y1,x3,y3)||triangle.inline(x4,y4,x3,y3,x2,y2)||triangle.inline(x1,y1,x2,y2,x3,y3))
return;
if(p.point(x1,x2,y1,y2)||p.point(x1,x3,y1,y3)||p.point(x1,x4,y1,y4)||p.point(x3,x2,y3,y2)||p.point(x4,x2,y4,y2)||p.point(x3,x4,y3,y4))
{
System.out.println("points coincide");
System.exit(0);
}
if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
{
sbx=true;t=true;
}
if((xj(x1,y1,x4,y4,x2,y2,x3,y3)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))||(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x3,y3,x4,y4,x1,y1,x2,y2))||(xj(x3,y3,x4,y4,x1,y1,x2,y2)&&xj(x1,y1,x3,y3,x2,y2,x4,y4)))
{
sbx=true;a=true;t=false;
}
if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
{
sbx=true;a=false;t=false;
}
if(((l5== triangle.l2&&l4==triangle.l3&&k4== triangle.k3)||(l4==triangle.l3&&l6==triangle.l1&&k4== triangle.k3)||(k5== triangle.k2&&l5== triangle.l2&&l6==triangle.l1))&&sbx)
pxsbx=true;
if(pxsbx&&triangle.zj)
jx=true;
if(triangle.l1==l4&&l4==l6&&l6==triangle.l3&&sbx)
lx=true;
if(jx&&lx)
zfx=true;
}
c= triangle.l1+ triangle.l3+l4+l6;
triangle.sjx(x1,y1,x3,y3,x4,y4);
s2= triangle.s;
S=s1+s2;
if(b==2)
{
if(x1==x3)
{
triangle.sjx(x2,y2,x3,y3,x4,y4);
s2= triangle.s;
S=s1+s2;
}
}
if(b==3)
{
if(pd(x1,y1,x2,y2,x3,y3,x4,y4))
{
if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
{
sbx=true;t=true;
}
if((xj(x1,y1,x4,y4,x2,y2,x3,y3)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))||(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x3,y3,x4,y4,x1,y1,x2,y2))||(xj(x3,y3,x4,y4,x1,y1,x2,y2)&&xj(x1,y1,x3,y3,x2,y2,x4,y4)))
{
sbx=true;a=true;t=false;
}
if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
{
sbx=true;a=false;t=false;
}
if(t||a)
S=s1+s2;
else
S= s1-s2;
}
else {
if(triangle.inline2(x2,y2,x1,y1,x3,y3))
triangle.sjx(x1,y1,x3,y3,x4,y4);
if(triangle.inline2(x3,y3,x2,y2,x4,y4))
triangle.sjx(x1,y1,x2,y2,x4,y4);
if(triangle.inline2(x4,y4,x1,y1,x3,y3))
triangle.sjx(x1,y1,x2,y2,x3,y3);
}
}
}
public boolean xj(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
double A1,B1,C1,A2,B2,C2,x,y;
A1=y1-y2;B1=x2-x1;C1=y2*x1-y1*x2;
A2=y3-y4;B2=x4-x3;C2=y4*x3-y3*x4;
if(A1*B2==A2*B1)
return false;
x=(B2*C1-B1*C2)/(B1*A2-B2*A1);
y=(A2*C1-A1*C2)/(A1*B2-A2*B1);
if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
return true;
else
return false;
}
public void jd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x,double y) {
double A1, B1, C1, A2, B2, C2;
A1 = y1 - y2;B1 = x2 - x1;C1 = y2 * x1 - y1 * x2;
A2 = y3 - y4;B2 = x4 - x3;C2 = y4 * x3 - y3 * x4;
x = (B2 * C1 - B1 * C2) / (B1 * A2 - B2 * A1);
y = (A2 * C1 - A1 * C2) / (A1 * B2 - A2 * B1);
}
public boolean pd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){
//判断四边形还是三角形
point3 s=new point3();
samepoint p=new samepoint();
if((x1==x2&&x2==x3&&y1==y2&&y2==y3)||(x1==x2&&x2==x4&&y1==y2&&y2==y4)||(x1==x3&&x3==x4&&y1==y3&&y3==y4)||(x2==x3&&x3==x4&&y2==y3&&y3==y4))
{
System.out.println("not a quadrilateral or triangle");
System.exit(0);
}
if((p.point(x1,x2,y1,y2)||p.point(x1,x3,y1,y3)||p.point(x3,x4,y3,y4)||s.inline(x3,y3,x1,y1,x2,y2))&&(s.pdsjx(x1,y1,x3,y3,x4,y4)||s.pdsjx(x1,y1,x2,y2,x4,y4)||s.pdsjx(x1,y1,x2,y2,x3,y3)))
return false;
else if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
return true;
else{
System.out.println("not a quadrilateral or triangle");
System.exit(0);
return false;
}
}
}
class case4{
String[] l=new String;
String[] s=new String;
double x1, y1, x2, y2,S,s1,s2,x5,x6,x7,x8,y5,y6,y7,y8,j;
public void point6(String str)
{
j=0;
l=str.split(" ");
zz x=new zz();
samepoint p=new samepoint();
point3 t=new point3();
point4 q=new point4();
q.quadrilateral(str.substring(l.length()+1),3);
s=l.split(",");x1 = Double.valueOf(s);y1 = Double.valueOf(s);
s=l.split(",");x2 = Double.valueOf(s);y2 = Double.valueOf(s);
if(p.point(x1,x2,y1,y2)){
System.out.println("points coincide");
System.exit(0);
}
q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3,x6,y6);
q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x1,q.y1,x5,y5);
q.jd(x1,y1,x2,y2,q.x4,q.y4,q.x3,q.y3,x7,y7);
q.jd(x1,y1,x2,y2,q.x1,q.y1,q.x4,q.y4,x8,y8);
if(t.inline2(q.x1,q.y1,x1,y1,x2,y2)||t.inline2(q.x2,q.y2,x1,y1,x2,y2)||t.inline2(q.x3,q.y3,x1,y1,x2,y2)||t.inline2(q.x4,q.y4,x1,y1,x2,y2))
j+=1;
if(!q.sbx)
{
if(t.inline2(q.x1,q.y1,x1,y1,x2,y2)){
if(t.inline2(q.x2,q.y2,x1,y1,x2,y2)||t.inline2(q.x3,q.y3,x1,y1,x2,y2)){
System.out.println("The line is coincide with one of the lines");
System.exit(0);
}
S=t.s;
if(q.xj(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3)){
j+=1;
t.sjx(x1,y1,x2,y2,x6,y6);
s1=t.s;
s2=S-t.s;
}
}
}
}
}
class case5{
String[] l=new String;
String[] s=new String;
double x1, y1;
public void point5(String str){
l=str.split(" ");
zz x=new zz();
samepoint p=new samepoint();
point3 t=new point3();
point4 q=new point4();
q.quadrilateral(str.substring(l.length()+1),2);
s=l.split(",");
x1 = Double.valueOf(s);y1 = Double.valueOf(s);
if(q.pd(q.x1,q.y1,q.x2,q.y2,q.x3,q.y3,q.x4,q.y4))
{
if(t.inline2(x1,y1,q.x1,q.y1,q.x2,q.y2)||t.inline2(x1,y1,q.x2,q.y2,q.x3,q.y3)||t.inline2(x1,y1,q.x3,q.y3,q.x4,q.y4)||t.inline2(x1,y1,q.x1,q.y1,q.x4,q.y4))
{
System.out.println("on the quadrilateral");
System.exit(0);
}
double S= q.S;
t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
if(Math.abs(S-s1-s2-s3-s4)<0.001)
System.out.println("in the quadrilateral");
else
System.out.println("outof the quadrilateral");
}
else
{
if(t.inline2(x1,y1,q.x1,q.y1,q.x2,q.y2)||t.inline2(x1,y1,q.x2,q.y2,q.x3,q.y3)||t.inline2(x1,y1,q.x3,q.y3,q.x4,q.y4)||t.inline2(x1,y1,q.x1,q.y1,q.x4,q.y4))
{
System.out.println("on the triangle");
System.exit(0);
}
if(p.point(x1,q.x1,y1,q.y1)||p.point(x1,q.x2,y1,q.y2)||p.point(x1,q.x3,y1,q.y3)||p.point(x1,q.x4,y1,q.y4))
{
System.out.println("on the triangle");
System.exit(0);
}
double S= q.S;
t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
if(Math.abs(S-s1-s2-s3-s4)<0.001)
System.out.println("in the triangle");
else
System.out.println("outof the triangle");
}
}
}
class samepoint{
public boolean point(double x1,double x2,double y1,double y2)
{
if(x1==x2&&y1==y2)
return true;
else
return false;
}
}
class zz {
public void z(String s){
if (!s.matches("[+-]?(0|(0\\.\\d+)?|*(\\.\\d+)?)")||s.matches("[+-]?")||s.length()>6) {
System.out.println("Wrong Format");
System.exit(0);
}
}
}
class point3{
boolean zj;
double l1,l2,l3,k1,k2,k3,s,c;
public void sjx(double x1,double y1,double x2,double y2,double x3,double y3)
{
zj=false;
l1=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
l2=Math.sqrt(Math.pow(x1-x3,2)+Math.pow(y1-y3,2));
l3=Math.sqrt(Math.pow(x3-x2,2)+Math.pow(y3-y2,2));
if(Math.abs(l1*l1+l3*l3-l2*l2)<0.000001)
zj=true;
k1=(y2-y1)/(x2-x1);
k2=(y3-y1)/(x3-x1);
k3=(y3-y2)/(x3-x2);
c=l1+l2+l3;
s=Math.sqrt((c/2)*(c/2-l1)*(c/2-l2)*(c/2-l3));
}
public boolean pdsjx(double x1,double y1,double x2,double y2,double x3,double y3)
{
if(inline1(x1,y1,x2,y2,x3,y3))
return false;
else
return true;
}
public boolean inline(double x1,double y1,double x2,double y2,double x3,double y3)
{
double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
if(Math.abs(l)<0.00001)
return true;
else
return false;
}
public boolean in(double x,double y,double x1,double y1,double x2,double y2)
{
if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
return true;
else
return false;
}
public boolean inline1(double x1,double y1,double x2,double y2,double x3,double y3)
{
double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
if(Math.abs(l)<0.00001&&in(x1,y1,x2,y2,x3,y3))
return true;
else
return false;
}
public boolean inline2(double x1,double y1,double x2,double y2,double x3,double y3)
{
double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
if(Math.abs(l)<0.00001&&(in(x1,y1,x2,y2,x3,y3)||(x1==x2&&y1==y2)||x1==x3&&y1==y3))
return true;
else
return false;
}
}SourceMonitor生成的报表内容:
类图
略
代码分析总结:
本题是对上一题按照给予的类图进行修改,但因为时间有限,在考试时没能写完,在考完回寝室之后才写完代码。
3.踩坑心得:
在写期中考试的题目时忘记用try来判断错误输入了,导致卡了较久。
4.改进建议
在写题时要先对题目总体进行分析,先画出类图的大致框架再去码代码,这样写题速度会提升较多。
要学会去使用继承与多态来简化代码。
5.总结
1.通过这几次作业,我对类的分工越来越熟练,提升也比较明显,也认识到了细分类的重要性,代码的复杂度在不断降低,复用性在不断上升。
2.今后也要重视问题分析,仔细分类,也多去了解多态的使用。
3.写代码考虑得不全面,导致经常有些测试点别人一遍过而我要卡半天。
4.如果实在无法理解题目可以去网上看看前辈们的思路,看看他们的类是怎么定义的,而不是明明看不懂题目还要去摁敲代码,到头来测试点又过不去,又浪费了大量时间。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]