前言:总结三次题目集的知识点、题量、难度等情况。
一:题目集1的第七题:
1.题目:对多个整数进行排序 (16 分),先从键盘输入一个整数n,n代表需要排序的整数数量,然后再从键盘输入n个整数,对这些数从小到大排序并输出。输入格式:先从键盘输入一个整数n,之后回车 再从键盘输入n个整数,整数之间用一个或多个空格分隔。输出格式:按如下示例输出排序后的数据:The sorted numbers are:排序后的n个数,每个输出的整数之后有一个空格作为分隔符,The sorted numbers are:2 3 3 4 4 5 8 56 76 89。
2.考查知识点:此次题目主要考察了对数的排序方法的思想,比如冒泡排序,插入排序等;考察了java的一定的语法,考察了java中数组的定义
java中的输入输出
3.源代码提交时出现的问题:输出时不知道怎么在每个数字之间查如空格。
4.对源代码提交过程中出现的问题的解决:system.out.println中用“+”连接空格字符。
5.此题目的收获:除了冒泡排序外,还有插入排序选择排序折中排序等,做次题目时我自然去查询复习里相关的排序方法,
6.此题目的改进方法:冒泡排序相对于折半插入排序不稳定而且有一定的空间代价,所以如若改进会采用折半插入排序,冒泡排序的空间代价为:O(1)。
7.次题目的难度:总体难度较低,不算什么难题
8.次题目类图之间的关系:
二:题目集的2的第八题:
1.题目
2.考察知识点:考察了java的基础语法,如输入输出:
次题目主要考察了double类型的数据特点:double类型的数不能表示所有的数,有些数只能近似表示,并不能准确表示,如√2,double并不能直接表达,只能近似表达。
3.源代码提交时出现的问题:当判断是否为等直角三角形时总不能通过
总是部分通过;当输入直角三角形时,就输出为一般的三角形,当输入等边三角形时就会输出等腰三角形,当输入等腰直角三角形时,也只输出等腰三角形,总而言之,就是,你输入什么三角形,他总是输入包含这一三角形的那一个范围更大的三角形。
4.对源代码提交过程中出现的问题的解决:问题一:改进前:
改进后:
原因分析:当要判断的直角三角形的三边分别为1,1,√2,时该改进前的判断方法就错误了,因为double形的数据并不能表达√2这一数字,只能近似表达,
这是double类型的进度问题,所以在以后的使用过程中一定要注意,考虑到进度问题,所以改进到
当两边的平方和与第三边的平方之差小于0.00000001时,即认为两边的平方和与第三边的平方为零。对于问题二:这是一的逻辑错误,一定要记住,在判断具有包含关系的事物时一定要从范围小的开始,判断到范围大的,及从被包含的判断到包含的,这就是我所犯的错误,如果从范围更大的判断到范围更小的,就会先判断范围更大的,一旦范围大的判断成功了,就不会在判断范围小的,或不仅输出范围大的,且还会输出范围小的,造成不想要的结果。所以这是判断具有包含关系的数据是需要考虑的因素。
5.此题目的收获:第一个收获认识到了double类型并不能表示一切小数,对于带根号的小数只能近似表达,所以在使用double类型的数据进行判断是一定要考虑到这一点,解决方案就是自己定义要判断的两数之间的精度,当两数之间的差距小于这一精度是就执行相应的任务。第二个收获就是对具有包含关系的数据的判断方法有了进一步的认识,及由小到大,有被包含到包含关系。
6.此题目的改进方法:对于次题的思路,在做完后发现了更好的方案:对于三角行的定位,一定要好好想想,三角形,等边三角形,等腰三角形,等腰直角三角形,直角三角形之间的交叉关系,包含关系,怎设计代码可以使if else语句更少一些且更少的判断,怎样改进才能增加代码的可读性呢?这里自己给出来了新的方案
这里先给出源代码,然后给出改进后的代码,方便读者进行比较和参考,从帮助读者更好的理解。
这是改进前的源代码
这是改进后的源代码:
可能各位读者读起来有困难,不要担心,我这里给出来解释:
首先,可以发现下面的if else语句少于上面的if else语句,其次就是,下面的代码可读性相对于上面的代码更强,思路更加的清晰,为什么这么说内,上面的代码思路有些混乱,虽然也可以完成任务,但是并没有什么线路,就是单纯的按照每个三角形的特点进行判断,这样的话就很如意重复判断,可以讲上面的一些代码进行一定的优化,缩减,可以按照一定的线路进行判断,下面改进后的代码的思路是:要先判断你输的数据对不对,如果数据都乱输入,什么都不用在判断了,直接结束程序,但是当数据输入正确时,再进一步的判断,当输入的数据合法是,我们先判断是不是一个三角行,如果连一个三角形都不是,就更别说什么直角三角形了,当是一个三角行时,我们在进一步判断,这是我们要停一停,好好想想个三角形之间的关系,直角三角形和等腰直角三角形之间是交集关系,不是什么包含关系,所以连着分开判断,等腰三角形和等边三角行之间是包含关系,且等边三角形包含在等腰三角形中,然后是等腰直角三行,一定也被包含在等腰三角形中,而等腰直角三角形和等边三角是相互独立的,没有什么交集,所以分别在等边三角形里进行判断;根据上面的分析,我们就可以写出相应的代码了。各位读者可以参考相应的代码。但是这仅仅是我的方案,我想各位读者肯定有更好的方案,如果有的话,还请各位指教
7.次题目的难度:此次题目总体思路较为简单,并无什么难度,但一个好的思路还是要进过思考的。
8.类图之间的关系:
三:题目集二的第四题:
1.题目
2.考查知识点:
此题考察了怎么判断闰年,方法的定义和使用。
3.源代码提交时出现的问题:跨年的总出错,及年没跨,闰年和非闰年的跨月测试总过不了。
还有就是没有将31天的月份和30天的月份分开。还有就是每次在idea里运行总是控制台输出非静态类不能使用静态类
4.对源代码提交过程中出现的问题的解决:对于跨年测试,原因在于自己忘记了这一情况,只要加上这一情况即可,在当12月份到达了最后一天的时候,不仅要对月份加一,其次还要将年数加一。对于闰年和非闰年,及分别对2月份进行讨论即可,闰年的二月分当天数为28日时,月份加一,对于非闰年的29日时,月份加一。下一个问题就更加简单了,只需要分开用if else语句判断即可。至于最后一个问题,和static修饰符有关,static修饰符表示的是共有的,当static修饰方法时,能调用此方法的方法可以是static类,也可以是非static类
但是static修饰的方法只能调用static修饰的方法,而不能调用非static类
5.此题目的收获:了解了static类得相关语法,当static类修饰了方法是,此方法只能调用静态方法,当是不是static的方法既可以调用static类方法,也可以调用非static类。其次,我也自学了static修饰属性,即当static修饰的属性是被此类创建的对象所共有的,子类也可以共用此类。
6.此题目的改进方法:可以对不同的判断内容进行合并和减缩,比如不论是不是闰年,有些月份的天数都是一样的所以这些都不许要在闰年和非闰年里都讨论一次,可以独立于闰年和非闰年这两大if语句。
7.此次题目难度:此次题目难度为中,主要是得考虑全面,比如跨年,跨月,而跨月里也要分31天的月份等等。
8.类图之间的关系:
四:7-5:
1.题目:
2.考察知识点:方法的定义以及应用
3.源代码提交时出现的问题:跨年的总出错,及年没跨,闰年和非闰年的跨月测试总过不了,还有就是没有将31天的月份和30天的月份分开。
4.对源代码提交过程中出现的问题的解决:对于跨年测试,原因在于自己忘记了这一情况,只要加上这一情况即可,在当12月份到达了最后一天的时候,不仅要对月份加一,其次还要将年数加一。对于闰年和非闰年,及分别对2月份进行讨论即可,闰年的二月分当天数为28日时,月份加一,对于非闰年的29日时,月份加一。下一个问题就更加简单了,只需要分开用if else语句判断即可。
5.次题目的收获:对事情的考虑更加细致,特别是与月份有管的代码考虑更加的全面。
6.此题目的改进方法:可以对不同的判断内容进行合并和减缩,比如不论是不是闰年,有些月份的天数都是一样的所以这些都不许要在闰年和非闰年里都讨论一次,可以独立于闰年和非闰年这两大if语句。
7.此次题目难度:此次题目难度中,主要还是对各种情况都要考虑到。
五:7-2:
1.题目:
2.考察知识点:考察了怎么创建一个类,类的基本构成要素,方法的定义,构造方法的定义,属性的创建。
3..源代码提交时出现的问题:没有考虑到跨年和跨月特别是闰年的二月份和非闰年的二月份。
4.对源代码提交过程中出现的问题的解决:和上面几道题一样,对多种情况进行判断分析。
5.此题的收获:最大的收获就是学会了累的定义即创建类,包括类里面的属性的定义,类里面方法的定义,以及构造方法方法的用处即使用和创建。
6.难度始终主要还是考察新的知识点。
7.类图之间的关系:
六:7-3:
题目:
2.考查知识点:正则表达,正则表达式是一种字符串匹配的模式。在这道题中的应用主要是对各种情况的表达式的判断和塞选,从而匹配出不同的式子,进而对不同的式子进行求导数
同时还考察了Pattern,Martcher类的使用。
3.源代码提交时出现的问题:利用Matcher类进行匹配塞选符合的字符串是总是显示找不到匹配的字符串,但是输入的字符串中明明有符合的字符串。
4.对源代码提交过程中出现的问题的解决:每次要提取出匹配成功的字符串是都要先martcher.find();只有这样才可以提取出来字符串。
5..次题目的收获:此次题目我收获颇多,如正则表达式的使用,Parttern类和Martcher类的使用等。
6.类图之间的关系:
七:总结:
通过这几次的作用,我基本对java的开发有了大致的了解,对面向对象的开发也有了相应的了解,同时也学习到了学多新的东西如什么事类,类的定义,类的创建,以及正则表达式,Parttern类,Martcher类,java的输入输出,java的数组的定义,java的对象创建。
原文:https://www.cnblogs.com/qui-shan-zi/p/14616487.html