Java第02次实验(Java基本语法与类库)
1.PTA-jmu-Java-02-Java基本语法
1.1 综合小测验
1.1.1 控制台输入处理
- 由于nextLine()方法与其他nextXXX方法混用会产生吞回车问题。所以建议全部使用
Scanner.nextLine()
处理输入以免碰到行尾回车换行问题。
1.1.2 Eclipse自动生成快捷键
-
Alt+
:switch、for、while、sysout、main -
缩进:
Tab、Shift+Tab
-
运行:
ctrl+F11
-
快速创建函数(createMethod):
quick fix
功能
1.1.3 代码
- 两段代码的比较,相比之下采用switch-case比较可观,简洁。
1.2 StringBuilder
1.2.1 Q&A
Q1:为什么使用StringBuilder而不使用String?
A1:在频繁修改字符串的时候,String具有不可变性,如果进行字符串的拼接时,就会需要多个字符串变量,就降低了代码的执行效率。
Q2:调用StringBuilder的append(char[] str)
方法时,是如何实现添加字符的操作?
A2:java.lang.StringBuilder.append(char[] str)
方法添加这个序列的char数组参数的字符串表示形式。字符数组参数按顺序追加序列的内容,这个序列的长度增加该参数的长度,且StringBuilder内部使用字符数组来存放字符。
1.2.2 Java StringBuilder类
1.2.3 代码
1.3 身份证排序
1.3.1 知识点
- sort1可直接使用
Arrays.sort
,String的subString
-
采用结构化编程方式,针对
sort1
、sort2
各写一个方法进行处理 -
换行问题:全部使用
Scanner的nextLine()
处理输入
1.3.2 代码
先用String类型的数组存放身份号,然后使用String类型的SubString方法截取出年月日存放到一个变量数组data中,然后使用Arrays类中的sort方法进行排序,就能得到排序好的数组。照出生月份排序:使用SubString截取的月,把月份放在最前面,然后再用sort排序,排完之后再换回来。
1.4 动态数组
1.4.1 知识点
- 定义数组时数组第一维需事先确定大小,第二维大小可在程序运行中动态确定
- 格式化输出:
String.format
或者System.out.printf
1.4.2 代码
1.5 ArrayList入门
1.5.1 ArrayList类
- 添加元素 arr.add("a");
- 删除元素 arr.remove(object obj);//移除数组中的obj元素
- 查找元素 Contains()、IndexOf()、LastIndexOf()三种方法
- 获取元素 arr.get(index);
1.5.2 代码
1.6 浮点数的精确运算
1.6.1 知识点--浮点数不精确问题
- 使用BigDecimal解决,BigDecimal对象的构造(以字符串的方式构造)
Q:BigDecimal的不可变性,如何体现?
A:BigDecimal在进行每一步运算时,都会产生一个新的对象,因此a.add(b)虽然作了加法操做,可是a并无保存加操做后的值,正确的用法应该是a=a.add(b);
1.6.2 代码
2. 加分题
2.1 Math类应用
新建n个大小的数组,往数组中随机填入1-100之间的整数(写成函数形式),然后统计并输出其中大于50与小于等于50的百分比(写成函数形式)。
2.1 知识点
Math类产生随机数
Math.random();//返回范围在[0.0,1.0)的双精度随机数
(int)(Math.random()*10);//返回0到9之间的int值
1+(int)(Math.random()*10);//返回[1,10]之间的int值
(int)(3+Math.random()*(17-3+1));//返回3到17之间的int值
Random类产生随机数
Random random = new Random();
random.nextInt(); //返回任意int值
random.nextInt(10); //返回范围在[0,10)之间的int值
2.1.1 代码
2.1.2 代码
编写一个简单密码生成器类SimplePasswordGenerator,内含一个方法:
public static String generate(int length),可以产生length长度的简单密码,该密码由大写字母、小写字母、数字组成。注意:小写字母中不应包含小写字母L。
输出:
2.1.3 代码
加分考核点:(选做)构造大小为26的char数组,随机生成n个从a-z的字符,最后统计输出每个字符占总生成字符的百分比。