| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 第一个博客测试 -> 正文阅读 |
|
[开发工具]第一个博客测试 |
Java第02次实验
试验任务书及相关材料 Java第2次实验文件.zip 1. 熟悉Git(可选)目标
1.1 使用网页版的操作代码仓库
注:目录结构规划暂时还不会,等后期有需要再整理。
中间步骤省略,简述就是右击项目,选择team->share project->commit. 第一次提交项目后,后期如果需要更新代码,需要将项目pull下来,检查合并之后再commit->push.
参考链接: 1.3 使用Git克隆(clone)项目到你的Eclipse项目中(可选)见以下参考资料"使用Eclipse Egit与码云管理你的代码"中的 重要提示: 使用Git来管理你的代码以后,当你在本地项目中开始编写新的代码之前,一定首先要将远程仓库的最新代码 参考资料: 2. PTA题集jmu-Java-02-Java基本语法 2.1 综合小测验(重点讲)对于控制台输入的处理,nextLine()方法与其他nextXXX方法混用会产生吞回车问题。建议全部使用
关键代码 ? private static void searched(Scanner sc, int[] numList) { int goal = Integer.valueOf(sc.nextLine()); int index = 0; index = Arrays.binarySearch(numList, goal); if (index < 0) { System.out.println(-1); } else { System.out.println(index); } } ? private static void sorted(Scanner sc) { String[] str = sc.nextLine().split(" ");// 将字符串利用空格分割成字符串数组 numList = new int[str.length];// 申请整型数组空间 for (int i = 0; i < str.length; i++) { numList[i] = Integer.valueOf(str[i]);// 将字符串元素转换成整型存入整型数组 } Arrays.sort(numList);// 利用array方法排序 System.out.println(Arrays.toString(numList)); } ? private static void getbirthed(Scanner sc) { int count = Integer.parseInt(sc.nextLine()); for (int i = 0; i < count; i++) { String id = sc.nextLine(); String year = id.substring(6, 10); String month = id.substring(10, 12); String date = id.substring(12, 14); System.out.println(year + "-" + month + "-" + date); } } ? ? private static void fibed(Scanner sc) { int fibs = 0; String numbers = sc.nextLine(); int n = Integer.parseInt(numbers); for (int i = 1; i <= n; i++) { fibs = Fib(i); if (i == n) { System.out.println(fibs); break; } else { System.out.print(fibs + " "); } } } ? ? private static int Fib(int n) { if (n == 1 || n == 2) { return 1; } else { return Fib(n - 1) + Fib(n - 2); } } ? 问题 一开始是在暑假的时候写的代码,按照面对过程的思想编写,也没有采用函数,即Java中的方法,显得冗长。所以这次博客全部将代码重新按照OO(object-oriented)的思想编写,遇到的问题如下:
收获 1.如何将已经写好的面对过程代码转化成方法 Eclipse采用快捷键
2.2 身份证排序(略讲)
关键代码 private static void sorted(int n, String[] id, String[] birth) { for(int i=0;i<n;i++) { birth[i]=id[i].substring(6, 10)+id[i].substring(10, 12)+id[i].substring(12, 14); //System.out.println(birth[i]); } Arrays.sort(birth);//先对生日进行升序排列 for(int i=0;i<n;i++) { for(int j=0;j<n;j++) {//再利用双重循环的有序性,输出所有的有序生日,避免漏掉重复。 if(id[j].contains(birth[i])){ System.out.println(id[j]); break; } } } } ? private static void formated(int n, String[] id, String[] birth) { for(int i=0;i<n;i++) { birth[i]=id[i].substring(6, 10)+'-'+id[i].substring(10, 12)+'-'+id[i].substring(12, 14);//注意这里拼接采用字符因为字符串的每一个元素是字符 } Arrays.sort(birth); for(int i=0;i<n;i++) { System.out.println(birth[i]); } } 问题
利用String对象的substring方法,截取相应下标长度的字符串,这里有个小技巧,如果已知起止位置下标,结束下标就等于起止下标加上字符串长度。
将要排序的字符串片段先进行排序,外层对字符串数组遍历,内层同样长度遍历过程中,如果包含有序字符串片段数组的外层下标,就将其输出。 2.3 StringBuilder(自行完成)关键代码 private static void added(Scanner sc) { while(sc.hasNextInt()) { int n = sc.nextInt(); int begin=sc.nextInt(); int end= sc.nextInt(); StringBuilder str = new StringBuilder();//创建一个对象 for(int i=0;i<n;i++) { str.append(i);//拼接数字 } String str1=str.substring(begin, end);//使用截取字符串方法 System.out.println(str1); } } 问题 使用 收获 使用
2.4 动态数组(自行完成)动态生成不规则大小的数组。定义数组时数组第一维需事先确定大小,第二维大小可在程序运行中动态确定。 关键代码 private static void multiplied(Scanner sc) { while(sc.hasNextInt()) { int n=sc.nextInt(); String [][]numTable = new String[n][];//创建一个二维数组,只定义了一维数组的大小 for(int i=1;i<=n;i++) { numTable[i-1]=new String[i];//记得申请空间 for(int j=1;j<=i;j++) { String equality = i+"*"+j+"="+i*j;//定义一个字符串变量接受等式 numTable[i-1][j-1]=equality;//将字符串变量存进二维数组 if(i==j) {//换行处条件为行数等于列数 System.out.println(equality); } else { System.out.printf("%-7s",equality); } } } System.out.println(Arrays.deepToString(numTable)); } } 问题
收获 打印二维数组可以采用Arrays的deepToString方法。
2.5 ArrayList入门(讲)略讲: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));//和上句效果一样 ? ? ? for (Integer e : integerList) { ? ? ? ? ? System.out.println(e); ? ? ? } ? ? ? //泛型,String ? ? ? List<String> strList = new ArrayList<String>(); ? ? ? strList.add(1+""); ? ? ? strList.add("abc"); ? ? ? strList.set(0, "def");//随机存取,设置0号位置的元素 ? ? ? for (int i = 0; i < strList.size(); i++) { ? ? ? ? ? System.out.println(strList.get(i)); ? ? ? } ? } } 关键代码 package chpt01; ? import java.util.Scanner; import java.util.Arrays; import java.util.ArrayList; public class Test05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<String> strList = new ArrayList<>(); String s; boolean flag = true; while(flag) { s = sc.next(); if(s.equals("!!end!!")) { break; } else { strList.add(s); } } //为strList添加begin strList.add(0,"begin"); //strList添加end strList.add("end"); //输出strList列表 System.out.println(strList); //读入字符串str String str = sc.next(); //返回是否存在str字符串 System.out.println(strList.contains(str)); //返回str所在下标,不存在返回-1 System.out.println(strList.indexOf(str)); //在strList中从后往前找。返回其下标,找不到返回-1。 System.out.println(strList.lastIndexOf(str)); //输出第一个下标为0的元素 System.out.println(strList.get(0)); //移除第一个下标为0的元素 strList.remove(0); //输出列表元素 System.out.println(strList); //读入字符串str1 String str1 = sc.next(); //替换原始的第二个位置元素 strList.set(1, str1); //输出列表 System.out.println(strList); //读入字符串str2 String str2 = sc.next(); //创建一个新的列表strList1 ArrayList<String>strList1 = new ArrayList<>(); //遍历strList的每一个对象,如果对象中含有str2就加入到新的列表 for(String each:strList) { if(each.contains(str2)) { strList1.add(each); } } //输出新列表元素 System.out.println(strList1); //移除strList中第一个和str2相等的元素 for(String each:strList) { if(each.equals(str2)){ strList.remove(each); break; } } //输出strList列表元素 System.out.println(strList); //使用clear方法清空strList列表 strList.clear(); System.out.println(strList+","+strList.size()+","+strList.isEmpty()); sc.close(); } } ? ? 2.5 浮点数的精确运算(略讲)关键代码 private static void sumAndFactor(Scanner sc) { while(sc.hasNextDouble()) { String a = sc.next(); String b=sc.next(); BigDecimal num1 = new BigDecimal(a); BigDecimal num2 = new BigDecimal(b); BigDecimal sum = num1.add(num2); BigDecimal product = num1.multiply(num2); System.out.println(sum.toString()); ? ? ? ? ? ?System.out.println(product.toString()); } } 问题 浮点数不精确,怎么办? 收获 使用BigDecimal解决。
输入字符串,创建一个BigDecimal实例。
采用'.'查找对应方法。(英文)
BigDecimal都是不可变的(immutable)的, 在进行每一次四则运算时,都会产生一个新的对象 ,所以在做加减乘除运算时要记得要保存操作后的值。 3. 加分题实验任务书中的题目2(Math类应用) 特别加分:6(一个实用的身份证信息查询程序)、8(作业随机分配) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:24:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |