一、前言

第一次题目集总结——

  • 题量:较多
  • 难度:较低
  • 知识点
  1. 简单的输入输出
  2. 一些简单的运算和类型转换
  3. 一些简单的循环、选择、字符串、数组的使用
  • 总结:题目比较简单,题量较多,内容就是一些简单的输入输出和简单的数学运算。

第二次题目集总结——

  • 题量:较少
  • 难度:较高
  • 知识点
  1. 输入格式判断
  2. 输出格式控制
  3. 字符串的应用
  4. 循环
  • 总结:题目数量少,难度较高,需对字符串进行遍历、查找。

第三次题目集总结——

  • 题量:较少
  • 难度:高
  • 知识点
  1. 判断多种输入格式并对应不同的输出
  2. 从字符串中获取数据
  3. 字符串的应用
  4. 数学运算

二、设计与分析

题目集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);
  1. 数据浮点数类型不同时,需看输出需求进行强制转换。
  2. 要注意题目要求,充分理解题目再做,对于题目中的一些不理解的名词要查询,比如第二次作业中的7-2中的奇偶校验。
  3. 要创建类来完成代码所需要的功能,只用一个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.要多注意细节,很多条件的判断经常出错。

 

四、总结

  1. 通过这三次题目集,对Java的实际应用在书本知识之外有了一些初步的认识,同时,通过实际练习,对于Java的一些简单的输入输出、简单的逻辑应用、一些数学运算以及一些特殊的函数和方法的应用更加熟练。
  2. 在做题目的过程中,通过查找资料,发现了许多新的方法,比如try catch。
  3. 同时,在做题过程中也更加清楚的了解到自己的不足之处,在哪一方面不太清楚,比如正则表达式就不会用,查找资料一时也不会用,需要多加学习。
  4. 希望老师在每次题目集时间截止之后能把题目集中比较难的题目集的答案或者思路发出来让我们自己进行对照。

面向对象程序设计A第一次blog的更多相关文章

  1. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  2. 20175221曾祥杰 实验二《Java面向对象程序设计》

    实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:曾祥杰 学号:20175221 指导教师:娄嘉鹏 实验日期:2019年4月17日 实验时间 ...

  3. JAVA第一次blog总结

    JAVA第一次blog总结 0.前言 大一下学期我们开展了OPP这门课程,这也是我们第一次接触到JAVA.与上学期我们在学校里学C语言不同的是,这学期由于疫情原因我们是以网课的方式在学习.在学习中我发 ...

  4. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

  5. [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境

    [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...

  6. [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS

    [.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且 ...

  7. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  8. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  9. 你好,C++(31)我终于找到对象啦!6.1 从结构化设计到面向对象程序设计

    第6章 当C++爱上面向对象 很多第一次进入C++世界的人都会问:C++中的那两个加号到底是什么意思啊? C++是由C语言发展而来的,它比C语言多出的两个加号,实际上是C语言的自增操作符,表示C++语 ...

  10. [.net 面向对象程序设计深入](8)认识.NET Core

    [.net 面向对象程序设计深入](8)认识.NET Core  1,概述          .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台.开源”却是其痛点,从16年开 ...

随机推荐

  1. 启动springboot项目报错Unable to start embedded Tomcat

    1.问题描述 最近在学习springcloud的时候,在父工程下新建一个model后,引入dashboard相关依赖后启动报错 2.产生原因 产生原因有可能就是pom.xml中下载的jar包版本冲突 ...

  2. [python] 基于NetworkX实现网络图的绘制

    NETWORK CHART(网络图) 代码下载地址 网络图 (或图表或图形)显示了一组实体之间的互连.每个实体由一个或多个节点表示.节点之间的连接通过链接(或边)表示.网络的理论与实现是一个广阔的研究 ...

  3. [OpenCV实战]44 使用OpenCV进行图像超分放大

    图像超分辨率(Image Super Resolution)是指从低分辨率图像或图像序列得到高分辨率图像.图像超分辨率是计算机视觉领域中一个非常重要的研究问题,广泛应用于医学图像分析.生物识别.视频监 ...

  4. .Net Core Logging模块源码阅读

    .Net Core Logging模块源码阅读 前言 在Asp.Net Core Webapi项目中经常会用到ILogger,于是在空闲的时候就clone了一下官方的源码库下来研究,这里记录一下. 官 ...

  5. React中实现keepalive组件缓存效果

    背景:由于react官方并没有提供缓存组件相关的api(类似vue中的keepalive),在某些场景,会使得页面交互性变的很差,比如在有搜索条件的表格页面,点击某一条数据跳转到详情页面,再返回表格页 ...

  6. 洛谷P3654 First Step题解

    这是一道暴力枚举. 大致题意:R行C列的棋盘要放下长度为K的线段,"#"表示无法放置,问有多少种放置方法. 直接贴代码: #include<bits/stdc++.h> ...

  7. c++ stl 详解 csp备考

    最近在准备csp认证考试,打算使用c++语言,以下是关于c++ stl库的内容: algorithm概览(作者:当格子衫爱上Helloworld) stl库详解(作者:c语言中文网) https:// ...

  8. C#IIS上传文件大小设置问题:maxRequestLength、maxAllowedContentLength

    system.web节点下的 maxRequestLength属性来指定最大上传文件的size,默认值是4M <system.web> <httpRuntime maxRequest ...

  9. .Net Framework创建grpc

    1.环境要求 .Net Framework 4.8 .Net Core 版本: https://www.cnblogs.com/dennisdong/p/17120990.html 2.Stub和Pr ...

  10. python爬虫学习——元组,字典(2.14日博客补)

    元组 ''' tup1 = () #创建一个空的元组 print(type(tup1)) #tup2 = (50) #不是元组,python把括号当成了表达式的一部分,即数学运算的括号 #tup2 = ...