面向对象程序设计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年开 ...
随机推荐
- CFS三层内网靶场
前言 最近学习了内网的一些知识,想着打一下靶场来试试,选择了这个CFS的三层内网靶场,做一下记录 靶场下载地址 链接:https://pan.baidu.com/s/1zGw5VNt222nCmf ...
- AtCoder Regular Contest 148 B - dp
题面 For a string \(T\) of length \(L\) consisting of d and p, let \(f(T)\) be \(T\) rotated \(180\) d ...
- 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做
摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...
- VS针对Linux远程调试步骤
VS2019下对于远程Linux下C++代码的调试 VS2017后新增了对跨平台代码的编写,编译和调试的功能,2019后更是新增了多种插件,以下是针对C++版本的linux环境代码调试 准备工作 安装 ...
- spring-in-action-day04-配置属性 @ConfigurationProperties
1.Spring环境抽象的概念 2.怎么配置属性.在application.yml举例一些常用的配置 3.自定义配置属性@ConfigurationProperties(prefix = " ...
- 研发效能DevOps推荐书单
专注 300 页之内的经典书籍推荐 研发效能涉及的知识很多,从大的方向去划分包括制度.组织.平台.运营等:单从软件研发的角度去看也包括很多,包括最底层的软工认知.实践,到团队管理和组织.敏捷研发,项目 ...
- clicknium-划时代的自动化
说起UI自动化,selenium一直是不可替代的存在,它的安装量.百度数量已经奠定了它在自动化.爬虫等相关领域的霸主低位,可以说,只要涉及到UI自动化,选selenium就对了. 细数过往,相关的UI ...
- brew基本操作指南
brew安装: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&q ...
- NOIP 模拟赛 简单题
\(\text{Solution}\) 发现题目就是求 \(\sum[\prod_{i=1}^k x_i \le n]\) \(k \le 10^9\) 太可怕了 然而发现如果限定 \(x_i > ...
- Vladik and fractions
题目大意 给出 \(n\),求一组 \(x,y,z\) 满足 \(\frac 1x + \frac 1y + \frac 1z = \frac 2n\) 若不存在合法的解,输出 \(-1\) 其中 \ ...