面向对象程序设计——前三次题目集总结
作者:互联网
前言
1.第一次大作业主要考察Java的基本语法、整型.实型数据的处理和选择语句的综合使用、数组的运用以及一些基本的字符串的运用。题量比较大,但是题目总体比较简单,每道题大概用时半个小时。
2.第二次大作业主要考察字符串的运用,尤其是对charAr和substring的运用。题量不大,难度总体适中,第二道题是难度最大的,需要一些时间去理解,但从思路上理解起来很清晰,每道题大概耗时三小时左右。
3.第三次大作业主要考察对字符串的处理能力和正则表达式的应用、自定义类,并且调用类里的各种方法、方法之间参数传递。题量不大,只有三道题,但是题目比较难,每道题基本上都要耗上一整天。
设计与分析
第二次大作业——7-2 串口字符解析
1.思路
1.通过charAt的运用对字符串进行分析,
2.判断空闲、起始、结束以及奇偶校验位的数字是否存在和正确,
3.用if语句再对相应的情况进行不同的分析,输出不同的结论。
2.重要代码分析
判断无起始点且数据数不足时的情况
1 for(int i=0;i<number.length();i++) 2 { 3 if(number.charAt(i)=='0') 4 { 5 sum=1; 6 } 7 } 8 if(sum==0||number.length()<11) 9 System.out.println("null data"); 10
其他的情况用if语句和for循环的嵌套依次实现
3.度量分析
参考SourceMonitor的生成报表内容以及PowerDesigner的相应类图
4.心得
优点:判断条件清晰,可修改性高。
缺点:使用的if - else 语句较多,导致代码结构复杂。
第三次大作业——7-1 点线形系列1-计算两点之间的距离
1.思路
1.通过正则表达式判断输入是否正确,
2.如果正确,然后在判断tokens【0】,
3.如果tokens【0】==一个数,进入判断语句,
4.如果长度不等于他的长度,就输出wrong number of points或者wrong format。
2.重要代码分析
1.判断输入的坐标格式是否正确
1 for(int i=0;i<number.length();i++) 2 { 3 if((number.charAt(i)=='+'||number.charAt(i)=='-')&&(number.charAt(i+1)=='+'||number.charAt(i+1)=='-')) 4 { 5 System.out.println("Wrong Format"); 6 n++; 7 }
2.计算两点之间距离
1 class cal{ 2 public static void length(double x1,double y1,double x2,double y2) { 3 double l=0,l1; 4 l1=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1); 5 l=Math.sqrt(l1); 6 System.out.println(l); 7 } 8 9 }
3.度量分析
参考SourceMonitor的生成报表内容以及PowerDesigner的相应类图
4.心得
1.类方法的定义都很清晰,所用到的 if - else 语句较少,圈复杂度较低。
2.用正则表达式判断可简洁代码,少走弯路。
3.字符串的应用在题目中有重要作用。
第三次大作业—— 7-2 点线形系列2-线的计算
1.思路
1.通过正则表达式判断输入是否正确,
2.如果正确,然后在判断tokens【0】,
3.如果tokens【0】==一个数,进入判断语句,
4.如果长度不等于他的长度,就输出wrong number of points或者wrong format。
2.重要代码分析
1.提取坐标点
1 class judged1{ 2 private static String df= "[1-5]:([+-]?\\d+(\\.\\d+)?,[+-]?\\d+(\\.\\d+)?\\s?)+"; 3
2.判断点的个数,得出不同的结论
1 public static void judge1(String number,String[] tokens) { 2 Double n = Double .parseDouble(tokens[0]); 3 if(tokens.length==5&&number.matches(df)&&n==1){ 4 twopoints.tow(tokens); 5 } 6 else if(tokens.length!=5&&number.matches(df)&&n==1) 7 System.out.println("wrong number of points"); 8 else if(tokens.length==7&&number.matches(df)&&(n==2||n==3)){ 9 threepoints.three(tokens); 10 } 11 else if(tokens.length!=7&&number.matches(df)&&(n==2||n==3)) 12 System.out.println("wrong number of points"); 13 else if(tokens.length==9&&number.matches(df)&&(n==4||n==5)) { 14 fourpoints.four(tokens); 15 } 16 else if(tokens.length!=9&&number.matches(df)&&(n==4||n==5)) 17 System.out.println("wrong number of points"); 18 else 19 System.out.println("Wrong Format"); 20 } 21 } 22 class twopoints{ 23 public static void tow(String[] tokens) { 24 Double n = Double .parseDouble(tokens[0]); 25 Double x1 = Double.parseDouble(tokens[1]); 26 Double y1 = Double.parseDouble(tokens[2]); 27 Double x2 = Double.parseDouble(tokens[3]); 28 Double y2 = Double.parseDouble(tokens[4]); 29 double k=0; 30 k=(y1-y2)/(x1-x2); 31 if(n==1) 32 { 33 if(x1-x2==0) 34 { 35 if(y1-y2==0) 36 System.out.println("points coincide"); 37 else 38 System.out.println("Slope does not exist"); 39 } 40 else 41 System.out.println(k); 42 43 }
3.度量分析
参考SourceMonitor的生成报表内容以及PowerDesigner的相应类图
4.心得
1.对字符串的处理能力和正则表达式的应用、自定义类,并且调用类里的各种方法、方法之间参数传递的运用更加熟练。
2.了解到数学能力对Java解题的重要性!
3.自己的逻辑思维得到锻炼
第三次大作业——7-3 点线形系列3-三角形的计算
1.思路
1.通过正则表达式判断输入是否正确,
2.如果正确,然后在判断tokens【0】,
3.如果tokens【0】==一个数,进入判断语句,
4.如果长度不等于他的长度,就输出wrong number of points或者wrong format。
2.重要代码分析
提取坐标点
class judged{ private static String df= "[1-5]:([+-]?\\d+(\\.\\d+)?,[+-]?\\d+(\\.\\d+)?\\s?)+";
3.度量分析
4.心得
1.增值表达式要学好,它对解题有着重要作用
2.这道题需要较好的数学功底
3.作业三的解题思路大同小异
踩坑心得
第二次大作业——7-2 串口字符解第
1.里面对于串口符的加法容易出错,有点+11,有点+10。
第三次大作业
因为第三次大作业的内容大同小异,都是用相同的思路解题,区别较大的是在数学计算上,所以我对这三道题进行一个统计。
我们可以将一些数学计算做一个类,再引用。否则圈复杂度过高,不利于下次迭代和维护。
线与线的sin值和cos值
心得
1.以前一直不理解数学对于Java的重要性,在完成这次大作业之后,我明白了学好数学的重要性。
2.我明白了面向对象程序设计的实质——面向对象程序设计要对题目给的对象先分析它有什么属性然后根据属性再创建类,类里面再创建特定的方法。
3.我深刻意识到:两个类之间关系的紧密(依赖)程度(关联——调用方法)耦合性越低越好。正所谓“高聚合,低耦合”。
4.多多使用类,调用类里的各种方法、方法之间参数传递,能够更好的面向程序设计,减少圈复杂度,将利于下次迭代和维护。
5老师上课讲的东西很少,但是很精;java的大多数东西都是靠自学学的,我认为这也是培养能力的一种方式,这才叫主动学习。通过了这次大作业,我学会了增值表达式等。
希望我在以后码代码能力能够加强,更加的面向程序设计!
标签:题目,Double,number,else,tokens,面向对象,wrong,&&,程序设计 来源: https://www.cnblogs.com/wenroululu/p/16124689.html