一、前言

通过对前三次PTA作业的总结,其中蕴含着不少知识点。它让真正开始接触Java的我一点一点的渗入其中。其包含的知识点有Java代码的大体结构,例如:

public class Main{

public static void main(String args[]){

}

}

接下来就是如何输入:

Import java.util.Scanner;

这段代码放在Main之外。

Scanner input=new Scanner(System.in);

输入整数和字符串分别为:

int i=input.nextInt();

String str=input.next();

或 Srting str=input.nextLine();

当然,我还学到了java中if~else语句嵌套使用,虽然C语言中也有,但用法还有有点区别的。此外,还有for循环语句也是其中知识点之一。

接下来就是构造数组:

以整型数组为例:

Int []array=new int[10];

以上创造了长度为10的整型数组。

之后还接触到的知识点有如何保留两位小数:

System.out.println(Sting.format(%.2f,a));(假设a为变量)

然后还学到了给数组中的元素排序的函数。此函数要引入包“import java.util.ArrayList;” 之后使用Arrays.sort(s3);(s3为数组名);

接下来的知识点就是偏向数学的知识点了,有点烧脑。它需要一步一步的嵌套使用if~else,并且逻辑上还不能出现错误,否则全盘重来。

此题就是第一次题目及判断三角形的题目,后面会着重讲解。

之后还学习了二进制与十进制之间的转化。很多同学都使用了相关函数,但是我使用的是别的方法,虽然相对复杂,但我还是理解的。我把字符数字的ASCII码转化成整型数字进行运算。在使用几个循环就输出了答案。

后面的知识点就是创造一个类了,并且在其中包含很多类方法。

最后一个也是最难的知识点就是正则表达式,说实话我到现在还没搞明白。

对于本三次作业,题量倒不是很大,但是难度却是有的。像每次作业最后一题,都花费了我大量时间,可能一上午都写不出来,有点头疼。需要不断的摸索,才能勉强靠近输出。

          二、设计与分析

PTA第一次作业第一题,第三题,第四题,第六题的思路较为简单,虽然其中代码可能较长,但都是没有什么含金量的题目。接下来我讲讲其余题目。

以上为第一次作业第二题前面的重要的代码,它的意思是随机输入一段字符串,然后从字符串第一个字符算起。后面就是一些简单的if~else判断语句,就不做太多的讲解了。

以上为第一次作业第五题的详细代码。可见代码量不大,思路也不算难,唯一需要注意的就是十元,五元,一元,五角,两分,一分等前面数字的运算过程。只要注意这些,此题就很快解决。

此题为第一次作业第七题的部分代码,大致内容是帮数组中的元素进行排序,我使用的是选择排序,因为我认为这种排序方法要比冒泡排序简单一些,而且思路清晰明了。排序后后面就是一些输出过程。也比较的简单。

此题为第一次作业第八题,我认为它是具有一定难度的。首先它需要你很了解三角形的相关知识,比如“两边之和大于第三边”,“两边之差小于第三边”等等。其次你还要知道判断三角形的顺序。如果你没有按照顺序判断,比如你想判断它是等腰直角三角形,但如果你把先前判断等腰三角形或者直角三角形的代码打在前面,它就直接输出它为等腰三角形或者直角三角形,这样就达不到你的要求。其他情况也类似。所以判断的逻辑顺序很重要。想对简单,但要通过全部的测试点还有有一点难度的。最后,就是精确度的问题。在你判断三角形边长的关系时,不能把条件锁死,要放宽点范围,比如假设a,b,c为三角形三边,判断a+b>c时,可以判断a+b-c>0.000001,这样的话就更精确。当初我也是犯了这个错误思考了很久才改过来的。接下来为此题的报表内容:

此题为第二次作业的第一题将二进制与十进制互相转化的题目。难度一般,但代码长度较长。我首先把随机输入的字符串传进字符串数组,然后用for循环依次控制范围把字符数字通过ASCII码转化为整型数字进行运算,最后在输出。

接下来为第二次作业第三题,代码长度很长。

本题先把错误情况排除,使用for循环嵌套达到目的。具体算法如下:

先分月份进行讨论:

若为1,3,5,7,8,10,12月,

则若日期小于1或大于31,则输出“Wrong format”;

若为4,6,9,11月,

则若日期小于1或大于30,则输出“Wrong format”;

接下来判断年份是否为闰年。

若为闰年,则若2月日期小于1或大于29,则输出“Wrong format”;

否则若2月日期小于1或大于28,则输出“Wrong format”;

如果输入的是一个有效的输入,则判断该日期距离公年1月1日有多少天,在除7看余数为多少。

以上代码为实现方法。

之后可以再用个switch~case语句输出就行。

接下来我们就讲解一下第二次作业第四题与第五题。

首先,第四题错误条件判断与第三题一模一样,在此就不做讲解了。

来看看如何判断下一天日期。

那么,我们就必须做好判断跨年,跨月判断的准备了。

先来分析分析跨年:

相信大家能看懂,一个if~else语句就搞定了。

接下来跨月也是一样的道理:

最后就是正常日期输入了:

输出输入日期的下一天就好。

当然值得注意的是闰年与二月份的关系,要记得注意判断。

接下来为第四题报表过程:

第五题也是一样的方法。但唯一需要注意的就是第五题能前推也能后推0~10天,遇到这种情况我们也不需要慌张,只需把if里的判断条件放大范围就好。例如:

此为跨年的情况。我们注意到此判断条件与第四题唯一的不同就是修改了范围,其余代码基本一样,包括错误输入代码、跨年跨月代码,以及正常输出代码等等都相同。接下来为第五题报表过程:

接下来我们来分析一下第三次作业的题目

先来看看第一题。

以上为类的创建,其中包含类中的元素、类方法等等。

通过每个类方法对类中元素进行操作,之后直接引用到主函数中,如下:

可见这样主函数会显得非常简洁明了,看起来非常舒服。

此题唯一的知识点就是创建一个新类,其余计算都非常简单。

需要注意的是若存款超过20000或者取款大于余额,会输出Wrong;并且存款按0计算。

接下来看第二题:

题目要求要用到以上图片的类方法。

则先创建一个类,在在类中写入方法:

set+日期与get+日期的类方法是为了在主函数中给类中元素一个输入来进行接下来类方法的调用与运算。本题算法运算与上述题中算法相似,现在来看看主函数中类方法的调用:

现在来看看第三次作业的最后一题

首先它考察的主要是正则表达式,这是主要难点。

正则表达式是通过字符串来匹配具有相同格式的其他字符串,例如:

第一个正则表达式是匹配多项式,第二个则匹配多项式中的单项式。

假设定义一字符串为input,匹配它的正则表达式为sburegex,则用法为:

开始我没有定义相关的包从而导致错误,其包为:

分离单项式后,就要分别提取出每个单项式的系数和指数。因此我分别运用了以下的正则表达式:

//提取系数

//提取指数

提取系数与指数后在分别存入数组中进行运算:

需要注意的是要转化数组类型进行运算,先转化为String型在化为int型:

转化后根据导数的算法把系数与指数进行运算后在存入新的数组中,之后在,matcher1.find(),matcher1.group(),macther1.end()对结果进行循环输出。

存在的问题

当指数与系数为1或-1时,不知道怎么用正则表达式匹配,因此无法将1或-1存入数组,从而导致运算接龙式错误。接下来为此题报表过程:

采坑心得

说到坑的话,估计就第一次作业第八题和第二次作业第三题了。错误点非常细。在每次提交代码的过程中,我的调试调试结果时这样的:

经过我一步一步的细化与调整,终于最终得到了满分。

有时我也出现过这样的情况:

,我发现每次我都会犯下非常小的问题,每调试一次,就解决其中一个问题,经过多次的调试,最终才能正确。就我个人而言,这也是我总结出来的一个方法:在以后写代码调试时,不要以下想着全对,正常情况就是经过反复的调试才能做到全对的结果,因此,在以后写代码的过程中要时不时的进行间断性调试,不要把代码打完在调试,这样可以减少试错的时间,也可以让大脑更清晰自己写的代码。不会让自己不知道错在什么地方。

                   四、改进建议

就我而言,本三次作业大部分题目代码已经很简单,比如给整型数组中的元素进行大小排序、对两个整型数进行加减、还有相关的if~else语句,switch~case语句。需要简化的是定义的变量。有些变量可以多次使用,而我却重新定义了很多没有使用过的变量,完全可以删去。并且在以后写代码时,我可以把需要的变量全部在开头定义好,而不是当需要的时候再去定义,这样显得潦草麻乱。此外,我还要简化主函数。我要多学会定义新的类,把需要的方法全部在类里面定义好,最后直接放入主函数使用,这样会看的很舒服。

五、总结

通过对这三次作业的总结,我学会了如何输入数据,如何创建新的数组,如何把字符串存进字符数组,如何调用函数,如何创建新的类,如何在类里面创建方法,如何调用类里面的方法、以及如何保留2位小数输出。

对老师教学的建议:希望老师以后作业最后一题难度可以小一些。补作业时间的间隔大一些,不然把时间全花在java上,其余课程没时间完成作业。

对前三次PTA作业的总结的更多相关文章

  1. 【作业】HansBug的前三次OO作业分析与小结

    OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...

  2. 前三次OO作业总结

    一.作业总结 前三次的任务都是表达式求导.这是我在高中就思考过的问题,但是很久都没有付诸实践,直到学习了"类"这个强大的工具.还有正则表达式,如果能适当使用,则不失为一个字符串格式 ...

  3. 前三次OO作业小结

    I used to be enamored of object-oriented programming. I'm now finding myself leaning toward believin ...

  4. 2018-北航-面向对象-前三次OO作业分析与小结

    基于度量的程序结构分析 由于平时使用了NetBrains出品的IDEA作为IDE,在分析程序的时候我使用了IDEA的插件Metrics Reloaded.然而在使用时发现不懂得很多分析项目的含义,因此 ...

  5. C高级第一次PTA作业 要求三

    要求一.要求二 内容链接:http://www.cnblogs.com/X-JY/p/8550457.html 一.PTA作业中的知识点总结 1.6-1 计算两数的和与差(10 分) (1)*在程序中 ...

  6. OO前三次作业总结

    一.第一次作业 1.程序设计分析 ![img](s1.ax1x.com/2018/04/02/CSgoSU.png) 图1 第一次作业类图 ![name](https://images2018.cnb ...

  7. Blog总结(前三次作业总结)

    前三次作业总结 1.前言 (1)第一次题目集共有8道题目,难度较为简单,知识点为JAVA的一些编程基础知识点,如输入输出,选择,循环,一维数组等. (2)第二次题目集共有5道题目,难度较第一次题目集有 ...

  8. OO前三次作业思考(第一次OO——Blog)

    OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开 ...

  9. 2016福州大学软件工程第三次个人作业-K米软件产品评测

    K米软件测评个人作业结果统计如下: 评分标准: 按照栋哥布置的第三次个人作业--K米测评制定评分标准如下: 第一部分:调研.评测 下载并使用,描述最简单直观的个人第一次上手体验. 0.5 按照描述的b ...

  10. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

随机推荐

  1. Linux 安装 WIFI驱动 rtl8188gu

    https://www.wyr.me/post/623 https://www.leonlu.cc/hobby/note006-rtl8188gu-linux/ 亲测:debian11,manjaro ...

  2. 嵌入式Linux—Framebuffer应用编程

    Framebuffer 应用编程 Frame的意思是帧,buffer的意思是缓冲区.Framebuffer就是一块内存(硬件设备),里面保存着一帧图像. ioctl()函数解析 ioctl()函数非常 ...

  3. spring-in-action-day05-REST

    1.创建RESTFUL端点 (1)创建get端点 (2)创建post端点 (3)创建put/patch端点 (4)创建delete端点 2.启用超媒体 3.消费REST端点 3.1使用RestTemp ...

  4. 鼎阳SDS6204长波形读取的潜力挖掘及上海光源测试

    ​​​ https://blog.csdn.net/weixin_43767046/category_11089525.html 上学期我搭建起来的逐束团3维质心位置测量系统一直是获取500us长的一 ...

  5. UI自动化中上传与唤醒弹窗

    本篇想谈的是在ui自动化中对上传的一些理解,干货满满. 一.是否有必要唤醒弹窗 以selenium为代表的库在进行文件上传时,是可以直接对输入框 "发送" 文件的,其send_ke ...

  6. JZOJ.4724 斐波那契

    \(\text{Problem}\) \(\text{Solution}\) \(\text{Fibonacci}\) 数列有一个性质:若 \(H_1=a,H_2=b,H_n=H_{n-2}+H_{n ...

  7. JZOJ 5348. 【NOIP2017提高A组模拟9.5】心灵治愈

    题目大意 求 \(b\) (正整数集合)使得 \(\sum_{i=1}^{n+1} a_i \times b_i = 1\) 其中给定 \(b_{n+1}=m\) 且为 \(b\) 中最大值 \(1 ...

  8. Os-ByteSec

    Os-ByteSec 目录 Os-ByteSec 1 信息收集 1.1 端口扫描 1.2 后台目录扫描 2 服务漏洞利用 2.1 检测smb服务漏洞 2.2 GetShell 3 提权 3.1 尝试提 ...

  9. SpringMVC基础源码分析(一)

    实现Controller的三种方式分析 每种实现的方式对应的HanderAdapter都不同. 实现Controller接口 该接口对应的HanderAdapter为SimpleControllerH ...

  10. STM32 I2C介绍和软件模拟I2C编程要点

    I2C协议层独特特征: 1. 通过地址(Master/Slave Address)区分不同的设备. 2. ACK信号体制,即通过ACK表示是否进行继续传输. 3.由SCL.SDA的四种关系,映射数据有 ...