实验目标
- 掌握Git的基本概念与基本操作。
- 进一步熟悉Scanner的使用。
- 熟练掌握IDEA与Eclipse常用快捷键
- 掌握常用类(String、Integer、StringBuilder等)及JDK文档的基本使用
- 掌握数组与ArrayList
试验任务书及相关材料
Java第2次实验文件.zip
1. 熟悉Git(可选)
目标
- 使用Git管理自己的Java课程学习代码
- 学会使用git进行源代码管理
- 学会使用命令行操作git
1.1 使用网页版的操作代码仓库
- 申请账号、登录并创建自己的仓库(远程)并规划好目录结构(比如按章节分,用英文)
- 通过网页版将文件提交到远程仓库中,并查看
- 使用命令行配置、将远程仓库克隆本地仓库、提交代码
- 在远程仓库修改或新建文件,通过命令行将远程仓库的变动拉到本地仓库
- 可选:根据老师提供的链接或者二维码加入团队,然后修改昵称。
- fork老师提供的代码库项目。
参考链接:
0.意义-现代软件工程讲义 源代码管理(为什么要用源代码管理)
1.推荐阅读-拓展阅读:促进团队合作的代码管理之Git
2.教程-Git与码云(gitee)入门-如何在实验室和宿舍同步你的代码(1)
3.Gitee帮助
4.教程-猴子都能懂得Git入门
5.gitee高校版
6.JShell简易教程等
1.3 使用Git克隆(clone)项目到你的Eclipse项目中(可选)
见以下参考资料"使用Eclipse Egit与码云管理你的代码"中的4 从码云将项目clone到你的电脑
重要提示:
使用Git来管理你的代码以后,当你在本地项目中开始编写新的代码之前,一定首先要将远程仓库的最新代码pull
到本地仓库,这可以降低冲突发生的可能。
参考资料:
2. PTA
题集jmu-Java-02-Java基本语法。
本节参考资料:
PTA提交说明
- 代码首行的
package
要去掉。 - public class的类名称一定要是
Main
。 - 快速测试方法:将样例输入复制到记事本(命令行使用notepad打开),并在最后一行回车换行,然后全选复制(
Ctrl+a
,Ctrl+c
),粘贴到控制台即可测试。
2.1 综合小测验(重点讲)
对于控制台输入的处理,nextLine()方法与其他nextXXX方法混用会产生吞回车问题。建议全部使用Scanner.nextLine()
处理输入以免碰到行尾回车换行问题。
主讲:
- IDEA代码片段:尝试使用
sout、fori、iter、while、ctrl+F12(查看文件结构)
、 - 使用IDEA快速创建程序框架(利用IDEA的extract功能快速创建方法)。
- Eclipse代码片段快捷键
Alt+\
,如switch、for、while、sysout、main
。 - 使用Eclipse快速创建程序框架(利用Eclipse的quick fix功能快速创建方法)。
- 不要重复创建Scanner对象。
其他:缩进, Tab、Shift+Tab
。运行, Shift+F10
(IDEA),Ctrl+F11
(Eclipse)。
注意:
- 如果JDK为1.6版本(最新版PTA已支持1.8),switch不支持字符串。需先将字将String转化为int(早期的PTA 中使用的open jdk6)
- 使用IDEA的
extract
功能快速创建函数int choice2Int(String choice)
- 使用Eclipse的
quick fix
功能快速创建函数int choice2Int(String choice)
2.2 身份证排序(略讲)
- 主要讲:sort1可直接使用
Arrays.sort
,String的subString。 - 采用结构化编程方式,针对
sort1
、sort2
各写一个方法处理。 - 其他:nextInt()与nextLine()混用可能产生的后果。建议:全部使用
Scanner的nextLine()
处理输入以免碰到行尾回车换行问题。
2.3 StringBuilder(自行完成)
使用+
进行字符串拼接的弊端
2.4 动态数组(自行完成)
动态生成不规则大小的数组。定义数组时数组第一维需事先确定大小,第二维大小可在程序运行中动态确定。
2.5 ArrayList入门(讲)
2.5.1 略讲:ArrayList的常用方法add(e)、add(index, e)等
使用ArrayList可以代替数组,见如下代码,ArrayList用法请参考JDK文档。
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {
public static void main(String[] args) {
//泛型,Integer
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(new Integer(1));//和上句效果一样。但有删除线,怎么去掉?
//1.底下这个for循环输出什么?
for (Integer e : integerList) { //使用foreach循环遍历ArrayList
System.out.println(e+" ");
}
System.out.println();
//泛型,String
List<String> strList = new ArrayList<String>();
strList.add(3+"");
strList.add("abc");
strList.add(1, "def");
strList.set(0, "def");//随机存取,设置0号位置的元素
//2.底下这个for循环输出什么?
for (int i = 0; i < strList.size(); i++) { //使用size()而不是length获取ArrayList中元素个数
System.out.print(strList.get(i)+" ");
}
System.out.println();
}
}
2.5.2 使用重构快速将代码片段抽取为方法
编程过程中常需使用某些代码片段来进行测试。如上述代码中,常需遍历数组列表。
可将鼠标框选如下代码,右键点击,在Refactor下选择Extract Method,将其抽取为方法。
for (int i = 0; i < strList.size(); i++) {
System.out.print(strList.get(i)+" ");
}
System.out.println();
2.6 浮点数的精确运算(略讲)
浮点数不精确,使用BigDecimal解决。
- BigDecimal对象的构造(以字符串的方式构造)
- 熟悉以面向对象的方式进行各种操作(加减乘除)。
- BigDecimal的不可变性,如何体现?
3. 加分题
实验任务书中的题目2(Math类应用)
特别加分:6(一个实用的身份证信息查询程序)、8(作业随机分配)