题目集1-3次作业的总结

发布时间 2023-03-26 21:49:36作者: 21161115王志

前言由于第一次接触java,刚开始对java的语法都不是太了解,但是在了解之后,发现java的一些基本语法与C语言的基本语法差不多,只是输入和输出java有些不同,还有C语言没有字符串而java有字符串。对于三次题目集掌握了java的基本语法以及数值之间的转换,一些字符串的应用以及类的创建以及应用和类中方法的构造。

一、第一次题目集作业总结

   1.题目集第一次作业的第一题是计算年利率:基本要求是输入一个年份计算这个年份下的实际利率

做题思路上直接使用if-else语句结构分别计算和输出各年份的实际利率。

不足:刚开始对于输入输出的基本语法不是特别熟悉和对于printf、print和println三者的区别不是很理解。

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   2.题目集第一次作业第二题是身体质量指数(BMI)测算:基本要求是输入身高和体重输出计算所得BMI数值在区间内的输出。

基本思路是按照公式计算BMI然后用if-else语句结构输出相应区间的输出语句。

不足:写代码的时候没有遵循写代码的规范,一行内输出多个语句。

 

        3.题目集第一次作业第三题是打印九九乘法表:基本要求是输入一个1-9的整数n,然后打印乘法表的前n行。

基本思路是使用双重for循环一行一行打印。

不足:写的时候对于如何换行以及输出语句中+的连接问题不是很了解。

 

        4.题目集第一次作业第五题是去掉重复的字符:基本要求是输入一个字符串,输出将其中重复出现的字符去掉后的字符串。

基本思路是运用双重for循环查找字符串中相同的字符,找到相同的字符时将后面那个字符删除。

不足:对于字符串的查找和删除不是很理解和熟悉,而是通过翻书所了解到的。

 二、第二次题目集作业总结

 1.题目集第二次作业第一题是长度质量计量单位换算:基本要求是输入两个浮点数换算成国际单位。

基本思路就是依照国际单位制进行换算。

踩坑心得:输入的数据要双精度浮点数才能进行单位换算,然后输出的时候只能用单精度浮点数输出。

不足:开始的时候对于数值的强制转换不太了解。

 

  2.题目集第二次作业第五题是学号识别:基本要求是输入学号判断入学年份、学院、班级和学号。

基本思路是输入一串字符串,再从字符串中判断年份、学院、班级和学号。

不足:一开始的思路是将学号每两个两个输入,然后发现不行,不符合输入规则,然后选择用字符串输入,但是用了字符串输入之后不知道怎么提取字符串中的子字符串来判断,最后通过翻书查找才了解到字符串的应用和如何将字符串中的子字符串类型转换成整型来判断是什么学院。

 

    3.题目集第二次作业第六题是巴比伦法求平方根近似值:基本要求是输入两个数用公式求平方根的近似值。

基本思路是将输入的两个数运用公式当差值小于0.00001时,就求得近似值,可以运用while循环来求。

不足:一开始在while循环中没有更新差值h的值使得程序一直陷入在循环之中。

 

 

 4.题目集第二次作业第七题是二进制数值提取:基本要求是在一个字符串中提取出其中的二进制数值序列。

基本思路是将字符串中的0、1字符输出。

不足:开始不会将字符串传进字符数组中,通过翻书之后了解到如何在字符串中查找字符以及将字符串传进字符数组。

 

 

    5.题目集第二次作业第八题是判断三角形类型:基本要求是输入三角形三条边判断该三角形是什么类型的三角形。

踩坑心得:在判断等腰直角三角形的时候,由于两条相等的直角边,第三边必定是一条根号边,但是由于不能输入根号,所以只能两条直角边的平方和减去第三条边的平方相差小于0.1就可以判断是等腰直角三角形。

不足:对等腰三角形和等腰直角形的判定总是出错,开始的时候不理解如何判定等腰直角三角形以至于全都判定成了等腰三角形。

 

 

 6.题目集第二次作业的第九题是输出日期下一天:基本要求是输入年月日的值,输出年月日的下一天。

基本思路是判断该年是否是闰年,如果是闰年的话二月就有29天,平年的话二月有28天,需要判断输入的这一天是否是在月尾还是年尾,如果是月尾的话就要进入到下一个月的一号,如果是年尾的话就要进入到下一年的一月一号,该题需要有几个用到几个方法,判断闰年和检查输入的日期是否合法,如果是平年二月没有29号,输入二月的二十九号,就会直接输出输入数据不合法。

踩坑心得:用了许多if-else语句来分情况是否是闰年的时候来判定二月的天数是28天还是29天以及每个月份的不同天数,这种代码通常会被鉴定为垃圾代码,可以用数组来记录月份的天数和调用以至于代码不那么冗长和混乱。

不足:对于月份天数的判断有一些混乱,以及对下一天的判断代码有一些冗长。

 三、第三次题目集作业总结

 1.题目集第三次作业第一题是创造一个圆形类:基本要求是编写一个圆形类Circle,写出带参构造和无参构造以及属性的getter、setter的方法以及求面积和输出数据的方法。

基本思路:用最基本的类构造的方法即可。

踩坑心得:刚开始我写了两个类一个主函数的类和一个圆形类,但是编译器过不了,然后我就去试了一下用一个圆形类,里面包含主方法,但是编译器还是过不了,说类名过不去,最后我把类名改成主函数的类名才过编译器,我不知道这个是不是正确的做法,但是改了之后可以通过编译器了。

 

 2.题目集第三次作业的第二题是设计一个名称为Account的类:基本要求是创造账号、余额以及利率开户时间等私有属性及月利率的计算方法以及存钱和取钱余额的方法。

基本思路:先将类的属性以及getter、setter方法写出来,然后再将月利率以及存取额方法给写出来。

不足:由于日期是LocalDate类型,之前不是很了解这个类型,通过查资料才了解到,还有类名是改成主函数类名才过了编译器;还有就是刚开始的时候没有考虑到存或者取金额的时候余额也要随着变动,以至于有一部分测试没过,通过在存或取的方法中更新一下余额的信息就可以解决了。

 

 

 

 

 

 

 

 

  3.题目集第三次作业第三题是定义一个日期类来求下一天:基本要求是输入的年、月、日必须是合法输入或者在输入区间内。

基本思路是先写出类的基本的属性以及getter、setter方法,然后写闰年的判断方法以及输入日期是否合法的方法,最后再写出求下一天的方法。

踩坑心得:由于在题目集二做过这个几乎差不多的题目,这次学聪明了用一个数组来存放每个月份的天数,不再用if-else语句再分多种情况去判断哪一个月有多少天,这使代码更加的简便,逻辑也更加清晰。

不足:在写求下一天方法的时候总是粗心大意,有时候会因为在月份最后一天的时候求下一天,忘记更新月份到下一月而出错等等还有许多这样类似的问题。

 

   

 4.题目集第三次作业第四题是一个日期类设计:基本要求是求下n天、求前n天和求两个日期相差的天数。

基本思路和之前的第三题差不多,只是这题的要求是求下、前n天以及相差的天数。

踩坑心得:在刚开始求下和前n天的时候我打算用while循环一个月一个月的加上去,写完之后提交测试我发现只过了正常值测试而边界值测试没有通过,然后我在想是不是可以再大一点一年一年加上去直到n小于365天的时候再用一个月一个月的加,这样可以减少很多的计算时间,提高效率。于是我在求下n天的时候就分了几种情况,如果n大于365天的话一种情况是一月到二月二十八号,输入的月份和日期在这个期间的话,需要判断这一年是否是闰年,是的话就加一年,n-366天,不是的话,加一年,n-365天,月份和日期不变;第二种情况则是输入的日期是二月二十九号,如果下一年是平年的话,加一年,n-365,月份要到三月的一号;第三种情况是三月到十二月,判断下一年是否是闰年,是的话就加一年,n-366天,不是的话,加一年,n-365天,月份和日期不变。求前n天和求下n天其实差不多,在求两个日期的相差天数的时候我直接采用了最朴素的做法,我先判断哪个日期前,然后给这个日期一天一天的加,统计加了多少天加到后面的那个日期。

 

 

 

 

综合性总结:1.通过题目集第一次作业熟悉了java的基本语法和对字符串的一些方法的使用,由于刚学习java,有些题目对于我来说难度还是很大的,所以题目集一里面的难题就没有列举出来了。

2.通过第二次题目集已经基本熟练java最基本的一些语法,也了解到字符串的一些使用方法以及将字符转换成整型和类型之间的强制转换,也知道了根号只能无限接近并不能直接得出,还有用数组来简化月份天数的调用和判断。

3.通过题目集第三次作业我充分的了解以及熟悉了类的创建以及类中的属性的创建,以及对问题的慢慢分析的能力。

4.改进建议:任务重,效率低,只能用时间给堆出来。