面向对象程序设计A第一次blog
一、前言
第一次题目集总结——
- 题量:较多
- 难度:较低
- 知识点:
- 简单的输入输出
- 一些简单的运算和类型转换
- 一些简单的循环、选择、字符串、数组的使用
- 总结:题目比较简单,题量较多,内容就是一些简单的输入输出和简单的数学运算。
第二次题目集总结——
- 题量:较少
- 难度:较高
- 知识点:
- 输入格式判断
- 输出格式控制
- 字符串的应用
- 循环
- 总结:题目数量少,难度较高,需对字符串进行遍历、查找。
第三次题目集总结——
- 题量:较少
- 难度:高
- 知识点:
- 判断多种输入格式并对应不同的输出
- 从字符串中获取数据
- 字符串的应用
- 数学运算
二、设计与分析
题目集2——
7-2 串口字符解析
1 import java.util.Scanner;
2
3 public class Main {
4
5
6 public static void main(String[] args) {
7 try (// TODO Auto-generated method stub
8 Scanner scanf = new Scanner(System.in)) {
9 String shuru= scanf.next();
10 int i=0;
11 int time=0;
12 int no=1;
13 int k=1;
14 for( i=0;i<=shuru.length();i+=k)
15 {
16 k=1;
17 if(shuru.length()<11||(time==0&&i==shuru.length()))
18 {System.out.println("null data");
19 break;
20 }
21 if(shuru.charAt(i)==0)
22 {
23 time=time+1;
24 int jiou=0;
25
26
27
28
29 for(int j=1;j<=8;j++)
30 {
31 if(shuru.charAt(i+j)==1)
32 {
33 jiou=jiou+1;
34 }
35
36 }
37 if(jiou%2!=0&&shuru.charAt(i+8+1)!=1&&shuru.charAt(i+8+2)==1)
38 {
39 System.out.println(no+":"+"parity check error");
40 no=no+1;
41 k=11;
42 }
43 else if(jiou%2!=0&&shuru.charAt(i+8+1)!=1&&shuru.charAt(i+8+2)!=1)
44 {
45 System.out.println(no+":"+"validate error");
46 no=no+1;
47 k=11;
48 }
49 else {
50 System.out.print(no+":");
51 for(int j=1;j<=8;j++)
52 {
53 if(j==7)
54 {
55 System.out.println(shuru.charAt(i+j));
56 k=11;
57 }
58 else
59 {
60 System.out.print(shuru.charAt(i+j));
61 k=11;
62 }
63
64 }
65 }
66
67
68
69
70
71 }
72
73
74 }
75 }
76 }
77
78 }
完成度低,实现功能少,没有完成对字符串的多次检索,不知道怎么实现循环多次对字符串进行查找。
题目集3——
7-1 点线形系列1-计算两点之间的距离
1 import java.util.Scanner;
2 public class Main {
3
4
5 public static void main(String[] args) {
6
7 Scanner sc=new Scanner(System.in);
8 double x1,x2,y1,y2;
9 String str;
10 str=sc.nextLine();
11 String[] StrArray = str.split(",| ");
12
13 try
14 {
15 x1=Double.valueOf(StrArray[0]);
16 y1=Double.valueOf(StrArray[1]);
17 x2=Double.valueOf(StrArray[2]);
18 y2=Double.valueOf(StrArray[3]);
19 for (int i = 4; i < StrArray.length; i++) {
20 double t=Double.valueOf(StrArray[i]);
21 }
22 if(StrArray.length>4)
23 {
24 System.out.println("wrong number of points");
25 }
26 else
27 {
28 double d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
29 d=Math.sqrt(d);
30 System.out.println(d);
31 }
32 }catch(Exception e)
33 {
34 System.out.println("Wrong Format");
35 }
36
37 }
38
39 }
使用try catch 错误处理,首先执行try中的代码,如果抛出异常会由catch去捕获并执行,如果没有发生异常catch会被忽略掉。try语句中测试代码中的错误,而catch语句处理错误。valueof()函数用于返回指定对象的原始值。split将字符串按“,”或“ ”分割为子字符串,然后将结果作为字符串数组返回。
7-2 点线形系列2-线的计算
1 import java.util.Scanner;
2
3 public class Main {
4
5 public static void main(String[] args) {
6 // TODO code application logic here
7 Scanner sc = new Scanner(System.in);
8 int op;
9 double x1, x2, y1, y2, x3, y3, x4, y4;
10 String str;
11 str = sc.nextLine();
12 String[] StrArray = str.split(":|,| ");
13 try {
14 op = Integer.valueOf(StrArray[0]);
15 x1 = Double.valueOf(StrArray[1]);
16 y1 = Double.valueOf(StrArray[2]);
17 x2 = Double.valueOf(StrArray[3]);
18 y2 = Double.valueOf(StrArray[4]);
19 for (int i = 5; i < StrArray.length; i++) {
20 double t = Double.valueOf(StrArray[i]);
21 }
22 if (op == 1) {
23 if (StrArray.length > 5) {
24 System.out.println("wrong number of points");
25 } else if (x1 == x2 && y1 == y2) {
26 System.out.println("points coincide");
27 } else if (x1 == x2) {
28 System.out.println("Slope does not exist");
29 } else {
30 double k = (y2 - y1) / (x2 - x1);
31 System.out.println(k);
32 }
33
34 } else if (op == 2) {
35 x3 = Double.valueOf(StrArray[5]);
36 y3 = Double.valueOf(StrArray[6]);
37 if (StrArray.length >=7) {
38 System.out.println("wrong number of points");
39 } else if (x1 == x2 && y1 == y2 || x1 == x3 && y1 == y3 || x2 == x3 && y2 == y3) {
40 System.out.println("points coincide");
41 } else if (x1 == x2) {
42 double d = Math.abs(x3 - x1);
43 System.out.println(d);
44 } else {
45
46 double k = (y2 - y1) / (x2 - x1);
47 double d = Math.abs(y3 - k * x3 + k * x1 - k * y1);
48 d = d / Math.sqrt(1 + k * k);
49 /*
50 double s1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
51 double s2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
52 double s3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
53 double s=(s1+s2+s3)/2;
54 double d=Math.sqrt(s*(s-s1)*(s-s2)*(s-s3));
55 d=2*d/s1;*/
56 System.out.println(d);
57 }
58
59 } else if (op == 3) {
60 x3 = Double.valueOf(StrArray[5]);
61 y3 = Double.valueOf(StrArray[6]);
62 if (StrArray.length > 7) {
63 System.out.println("wrong number of points");
64 } else if (x1 == x2 && y1 == y2 || x1 == x3 && y1 == y3 || x2 == x3 && y2 == y3) {
65 System.out.println("points coincide");
66 } else {
67
68 double k1 = (y3 - y2) * (x2 - x1);
69 double k2 = (y2 - y1) * (x3 - x2);
70 if (k1 == k2) {
71 System.out.println("true");
72 } else {
73 System.out.println("false");
74 }
75 }
76 } else if (op == 4) {
77 x3 = Double.valueOf(StrArray[5]);
78 y3 = Double.valueOf(StrArray[6]);
79 x4 = Double.valueOf(StrArray[7]);
80 y4 = Double.valueOf(StrArray[8]);
81 if (StrArray.length > 9) {
82 System.out.println("wrong number of points");
83 } else if (x1 == x2 && y1 == y2 || x1 == x3 && y1 == y3 || x2 == x3 && y2 == y3) {
84 System.out.println("points coincide");
85 } else {
86 double k1 = (y2 - y1) / (x2 - x1);
87 double k2 = (y3 - y4) / (x3 - x4);
88 if (k1 == k2) {
89 System.out.println("true");
90 } else {
91 System.out.println("false");
92 }
93 }
94 } else if (op == 5) {
95 x3 = Double.valueOf(StrArray[5]);
96 y3 = Double.valueOf(StrArray[6]);
97 x4 = Double.valueOf(StrArray[7]);
98 y4 = Double.valueOf(StrArray[8]);
99 if (StrArray.length > 9) {
100 System.out.println("wrong number of points");
101 } else if (x1 == x2 && y1 == y2 || x1 == x3 && y1 == y3 || x2 == x3 && y2 == y3) {
102 System.out.println("points coincide");
103 } else {
104 double k1 = (y2 - y1) / (x2 - x1);
105 double k2 = (y3 - y4) / (x3 - x4);
106 if (k1 == k2) {
107 System.out.println("is parallel lines,have no intersection point");
108 } else {
109 double b=y1-k1*x1;
110 double d=y3-k2*x3;
111 double x0=(d-b)/(k1-k2);
112 double y0=k1*(d-b)/(k1-k2)+b;
113 System.out.println(x0+","+y0);
114 d=(x0-x1)*(x0-x1)+(y0-y1)*(y0-y1);
115 b=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
116 if(d<b)
117 System.out.println("true");
118 else
119 System.out.println("false");
120 }
121 }
122
123 }
124
125 } catch (Exception e) {
126 System.out.println("Wrong Format");
127 }
128
129 }
130
131 }
同7-1一样使用try catch 错误处理,首先执行try中的代码,如果抛出异常会由catch去捕获并执行,如果没有发生异常catch会被忽略掉。try语句中测试代码中的错误,而catch语句处理错误。split将字符串按“,”或“ ”分割为子字符串,然后将结果作为字符串数组返回。valueof()函数用于返回指定对象的原始值。数学运算不合理,有几处运算错误,对输入格式的判断不充分,很多错误输入格式的测试点没过。没有类的建立,直接一个Main函数写完所有功能,导致代码繁琐以及不易阅读。
7-3 点线形系列3-三角形的计算
1 import java.util.Scanner;
2 public class Main {
3
4
5 public static void main(String[] args) {
6
7 Scanner sc=new Scanner(System.in);
8 String str;
9 str=sc.nextLine();
10
11 System.out.println("Wrong Format");
12
13 }
14
15 }
该题目未完成。
三、踩坑心得
1 Scanner input = new Scanner(System.in);
2 float kg = input.nextFloat();
3 float m = input.nextFloat();
4 double newkg,newm;
5 newkg = kg/(0.45359237);
6 newm = m/(0.0254);
7 System.out.println((float)newkg+" "+(float)newm);
- 数据浮点数类型不同时,需看输出需求进行强制转换。
- 要注意题目要求,充分理解题目再做,对于题目中的一些不理解的名词要查询,比如第二次作业中的7-2中的奇偶校验。
- 要创建类来完成代码所需要的功能,只用一个main来完成所有功能的话会造成代码非常冗杂,并且可读性较低
1 import java.util.Scanner;
2 public class Main {
3
4
5 public static void main(String[] args) {
6
7 Scanner sc=new Scanner(System.in);
8 double x1,x2,y1,y2;
9 String str;
10 str=sc.nextLine();
11 String[] StrArray = str.split(",| ");
12
13 try
14 {
15 x1=Double.valueOf(StrArray[0]);
16 y1=Double.valueOf(StrArray[1]);
17 x2=Double.valueOf(StrArray[2]);
18 y2=Double.valueOf(StrArray[3]);
19 for (int i = 4; i < StrArray.length; i++) {
20 double t=Double.valueOf(StrArray[i]);
21 }
22 if(StrArray.length>4)
23 {
24 System.out.println("wrong number of points");
25 }
26 else
27 {
28 double d=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
29 d=Math.sqrt(d);
30 System.out.println(d);
31 }
32 }catch(Exception e)
33 {
34 System.out.println("Wrong Format");
35 }
36
37 }
38
39 }
4.要多注意细节,很多条件的判断经常出错。
四、总结
- 通过这三次题目集,对Java的实际应用在书本知识之外有了一些初步的认识,同时,通过实际练习,对于Java的一些简单的输入输出、简单的逻辑应用、一些数学运算以及一些特殊的函数和方法的应用更加熟练。
- 在做题目的过程中,通过查找资料,发现了许多新的方法,比如try catch。
- 同时,在做题过程中也更加清楚的了解到自己的不足之处,在哪一方面不太清楚,比如正则表达式就不会用,查找资料一时也不会用,需要多加学习。
- 希望老师在每次题目集时间截止之后能把题目集中比较难的题目集的答案或者思路发出来让我们自己进行对照。
面向对象程序设计A第一次blog的更多相关文章
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20175221曾祥杰 实验二《Java面向对象程序设计》
实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:曾祥杰 学号:20175221 指导教师:娄嘉鹏 实验日期:2019年4月17日 实验时间 ...
- JAVA第一次blog总结
JAVA第一次blog总结 0.前言 大一下学期我们开展了OPP这门课程,这也是我们第一次接触到JAVA.与上学期我们在学校里学C语言不同的是,这学期由于疫情原因我们是以网课的方式在学习.在学习中我发 ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境
[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...
- [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS
[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计
第6章 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语 ...
- [.net 面向对象程序设计深入](8)认识.NET Core
[.net 面向对象程序设计深入](8)认识.NET Core 1,概述 .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台.开源”却是其痛点,从16年开 ...
随机推荐
- 【架构设计】保持简单轻量设计的三个原则——DRY,KISS, YAGNI
前言 一个软件轻量简单的软件架构是非常重要的,它可以让我们花最小的代价就能满足业务上的需求.那如何保证轻量简单呢?那今天就和大家分享下这其中的秘密,也就是3个重要的指导原则,KISS原则,YAGNI原 ...
- Centos下部署最后一版支持Docker的k8s集群
部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master · kubernetes/kuberne ...
- [OpenCV实战]3 透明斗篷
目录 1寻找和存储背景帧 2红色区域检测 3提取红色区域 4背景帧红布区域替换当前帧红布区域. 5工程代码 参考 弄出哈利波特电影里一样效果的透明斗篷.也就是一个视频里,将红布弄成透明.类似下面的效果 ...
- org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive
昨天23点给一个老项目改完打包发布到云服务器后报错,Tomcat9 启动不了,白折腾了我几个小时. 这错误以前遇到过,由于太过久远已经忘记,特此记录 错误日志 22-Dec-2021 23:52:18 ...
- S2-009 CVE-2011-3923
漏洞名称 CVE-2011-3923 S2-009 远程代码执行漏洞 利用条件 Struts 2.0.0 - Struts 2.3.1.1 漏洞原理 OGNL提供了广泛的表达式评估功能等功能.该漏洞允 ...
- 学习记录C
学了这么久,终于开始实训项目了....... 奥里给 !!! 压力好大,好喜欢什么也不想的时候 记录学习的代码 分享一下 /* system函数:( #include<stdlib.h> ...
- spark RPC超时造成任务异常 Attempted to get executor loss reason for executor id 17 at RPC address 192.168.48.172:59070, but got no response. Marking as slave lost.
日志信息如下 Attempted to get executor loss reason for executor id 17 at RPC address 192.168.48.172:59070, ...
- 跟AWS学极致服务
春节期间,除了还在看技术书籍外,我一直抽空断断续续地在看<极致服务:创造不可思议的客户体验>一书.之前创业的经历,让我一直反思,除了赛道和落地之外,是否在服务质量上也有缺失. 书里从一个商 ...
- SEO关键词布局方法
关键词在<title>标签. description属性. keywords属性中是如何布局的. 1.<title>标签中布局关键词 <title>标签是用来定义网 ...
- 真正“搞”懂HTTP协议12之缓存代理
我们在前两篇的内容中分别学习了缓存和代理,大致了解了缓存有哪些头字段,代理是如何服务于服务器和客户端的,那么把两者结合起来,代理缓存,也就是说代理服务器也可以缓存,当客户端请求数据的时候,未必一定要追 ...