初学java
初识java
前言:
一共发布了三次作业,以下是题目标题,具体要求进入https://pintia.cn/problem-sets?tab=1&filter=all,查看javahomework1~3。

每次作业分为几小题,每题的分数不同,总分100分。给分标准是测试点,每题会根据题目功能要求设置测试点,需要严格按照题目要求以及功能才能通过测试点,题目的审判有电脑完成。
- 作业过程总结
①总结三次作业之间的知识迭代关系;
第一次作业只需要一个Main类就可以实现题目的所有要求,所有功能在Main类中实现即可。
第二次作业就需要在Main类中构造方法,main函数的功能只作为程序的入口,大部分功能的实现需要通过调用Main类中的方法进行实现。第二次作业多了很多方法,方法里面解决功能,返回想要的值。
第三次作业则是类与类之间的互相调用。Main类不是代码中唯一的类,根据不同的功能你会另外构造不同的类,main函数的功能依旧是程序的入口,放在某一个类中,当需要完成某功能时,需要调动其他类里面的方法进行实现,达到功能交互的功能。第三次作业需要在Main类外另外写过新的类,多了get和set的方法,以及变量的属性,方法的交互,还需要理解UML类图。
②如何通过作业逐步从面向过程过渡到面向对象;
一开始完成第一次作业,仅仅只需要写出每题功能的代码即可,也就是说,只要写出解题过程,知道怎么写代码完成题目问题的功能的代码就能完成。这应该是面向过程的概念,只需要解决问题的解决方法就行。然后第二次作业是将方法剥离出来,把解决问题的方法进行封装成方法函数,把这种方法变成任意调用的对象。如果需要再次使用到这种方法时,只需要调用这个方法函数即可,不需要重新写过一遍代码。我觉得这是一种简化的面向对象,调用对象后,在对它进行选择方法,先处理对象,再处理方法。第三次作业就变得不一样了,一个Main类不能完成题目的要求,你需要另外构造新类,把每个对象都当做类来处理,每个对象都有它自己的方法在类里面。把类当做对象,需要新建对象然后对对象进行调用对象的方法。
③作业过程中遇到的问题及解决方法
1、java的数据输入问题。
解决方法:通过查阅和百度,查看相关博客,了解到java的数据输入一般有三种方法。
2、数据的类型和精度问题。
输入三角形三条边,判断该三角形为什么类型的三角形。

输入格式:
在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为[1,200]。
输出格式:
(1)如果输入数据非法,则输出“Wrong Format”; (2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”; (3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”; (3)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”; (5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”; (6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”; (7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。
像这题,在判断等腰直角三角形中,斜边与腰的关系无法用根号2来表示,因为根号2是一个无线不循环小数,不精确,无法实现斜边与腰关系的倍数表示。
解决方法:进行作差,保证数据的精度比你需要的精度小,即斜边-根号2倍的腰的值小于精度0.0000001。
3、求两日期差多少天的功能实现。
在1820年一年的日期差为365,和1820.01.01—1821.01.01的日期差为365.
解决方法:设置断点,对两次输入进行逐步调试,分析得出是在闰年的处理代码上出现问题,进行修稿过后,解决问题。
④每次作业花费的时间比例
两天:四天:八天
⑤对编程过程的严谨性的认识及教训
编程过程中出现过很多不严谨的错误,导致代码的编译错误以及功能的错误,一般会出现变量名打错,变量误用,边界处理不认真。对每个变量的使用情况和后续打算没有具体理解。
2.OO设计心得
①面向过程与面向对象的比较
面向过程:只分析解决问题的解决步骤。
面向对象:把问题分块变成对象,对象拥有自己的属性,方法。
②面向对象设计的基本原则理解
单一职责:一个类尽量只有一个功能。
③OO编程思维的理解
面向对象的处理思维,不在只寻求解决步骤,同时把对象表现出来。
3.测试的理解与实践
①测试对于编码质量的重要性
测试能够基本确定编码的功能完成情况,以及反映功能的实现状况。测试还能够知道编码运行的效率,可以初步判断代码算法的质量和简洁性,时间空间利用率。用户可以通过测试反映出的功能实现状况进行修改源代码的功能错误,也可以进一步升级,完善源代码。测试能够直接知道代码功能的实现,及明白代码的逻辑功能实现的错误,发现编译不能发现的错误。测试能让用户反代码的错误,也能让用户改进代码,以及确认代码的功能实现。
②假如让你设计测试用例,你会如何做
考虑问题的实际性,测试用例一定要保证接近现实数据。
考虑各种极限情况,边界值的测试,极大值极小值的测试。
考虑特殊情况的测试,针对不同的问题,如果出现特殊情况或者会出现变化偏差的情况需要单独测试。
考虑正常情况的测试,正常的功能情况随机输入进行测试确保每次有效。
考虑功能全面的测试,确保功能的全面性,进行功能测试。
考虑代码的运行效率,分析代码算法的效率性。
4.课程收获
①一定要确认每次变量的类型和精度问题
②很多时候需要调试每一行代码才能知道具体哪里有问题
③需要根据自己的理解可适当添加或修改检查代码,确认自己的程序是按照自己的逻辑来运行的。
④在编译器中有一些快捷功能可以使用
⑤更加熟悉了面向对象的思想,熟悉java的编程风格。
5.对课程的建议
建议多一些实力讲解,某些难知识点可以通过逐步讲解,逐层讲解来慢慢理解。多一些实例提供参考和和借鉴学习。
浙公网安备 33010602011771号