Java第02次实验
这个作业属于哪个班级 | JAVA--网络2012 |
---|---|
这个作业的地址 | 博客提交:Java第02次实验(Java基本语法与类库)-CSDN社区 |
这个作业的目标 | Java第02次实验(Java基本语法与类库) |
姓名 | 李兴果 |
2.PTA
2.1 综合小测验
对于控制台输入的处理,nextLine()方法与其他nextXXX方法混用会产生吞回车问题。建议全部使用Scanner.nextLine()
处理输入以免碰到行尾回车换行问题。
注意
- Eclipse自动生成快捷键解
Alt+\
,如switch、for、while、sysout、main。 - 使用Eclipse快速创建程序框架(利用Eclipse的quick fix功能快速创建方法)。
- 不要重复创建Scanner对象。
- 缩进,
Tab、Shift+Tab
。运行,ctrl+F11
。 - 如果JDK为1.6版本(最新版PTA已支持1.8),switch不支持字符串。需先将字将String转化为int(早期的PTA 中使用的open jdk6)
- 使用Eclipse的
quick fix
功能快速创建函数int choice2Int(String choice)
-
一开始做这道题的时候,首先看到关键词“输入四个选项”,就有想到用switch的方法,四个选项分四块case。
-
问题:Q1:对于第二个模块sort上,明显是需要使用数组形式,然后对数进行排序,我的想法是把数字都取出来然后放在新建的数组里面,因为字符串里面可能包含空格。使用了substring来取字符串,再使用Integer的parseInt取数字,查了数组Arrays.sort()用来排序,但还是没对。
-
Q2:search模块上,查找数字并返回下标,查找数字的话,用数组Arrays.binarySearch(下标,关键字)方法查找下标
-
Q3:身份证这里就是使用substring取字符n~m
-
Q4:共用数组问题
-
代码块:
- 原先sort模块
- 原先sort模块
-
老师sort模块
老师的代码简洁更多,构造另外函数方便调用
- search模块:
2.2 身份证排序
-
主要讲:sort1可直接使用
Arrays.sort
,String的subString。 -
采用结构化编程方式,针对
sort1
、sort2
各写一个方法处理。 -
其他:nextInt()与nextLine()混用可能产生的后果。建议:全部使用
Scanner的nextLine()
处理输入以免碰到行尾回车换行问题
-
分析:此题执行两个功能模块sort1与sort2
新建数组A[] B[] C[] 分别给与分配空间,B数组存放输入内容,执行sort1时C数组存放A数组中的年月日,然后使用sort对数组C排序,sort同理
-
主要代码:
2.3 StringBuilder用法
- 百度:
String对象是不可改变的。每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类
a:通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder类的新实例:
创建Stringbuilder对象:StringBuilder strB = new StringBuilder();
- 这里字符串连接应用到append(String str)/append(Char c)
b:StringBuilder对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是可以为它可容纳的最大字符数指定一个值,此值称为该对象的容量;
2.4 动态数组
-
分析:乘法表的打印需要用到二维数组,需要考虑数组内容以及打印格式
-
一开始没有考虑到格式问题询问同学之后知道使用%s来控制格式
2.5 ArrayList入门
- 添加 arr.add(xx,"y");
- 移除下标元素 arr.remove(indx);
- 包含Contains();
- 查找 IndexOf()、LastIndexOf();
- 获取 arr.get(index);
2.5 浮点数的精确运算
-
问题:Q1 为什么浮点型计算不用float或者double进行计算
-
解决:浮点数由两部分组成:指数和尾数。浮点数的值实际上是由一个特定的数学公式计算得到的,float类型的变量只有7位的精度,而double类型的变量有16位的精度
-
百度:
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中若需要精确的计算结果则要用java.math.BigDecimal类。
- 注:
a:使用BigDecimal时,需要用java.math.BigDecimal类,并且new一个BigDecimal空间
b:这里加法add以及乘法multiply使用b1和a1面向对象