第五章数组 实验目的 (1) 掌握一维 二维数组的定义及初始化方法 (2) 掌握循环结构域数组相结合解决问题的方法 (3) 理解数组下标和数组元素间的关系 (4) 掌握 List 类的使用方法 实验范例 1 静态数组 (1) 数组例 1:( 一维数组 ) 输入一行字符, 分别统计出其中英文字母 空格

Similar documents
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

新・解きながら学ぶJava

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word - 新1-12.doc

untitled

untitled

实验报告 实验题目 Java 实验 (1) 实验目的 学习 Java 语言的编程 实验准备 直接从网上或从上传作业的网站上下载并安装 JDK

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

untitled


内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

javaexample-02.pdf

untitled

// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Coll

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Microsoft Word - 第3章.doc

CHAPTER VC#

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

untitled

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

Chapter 9: Objects and Classes

public String getsex() { return ssex; public int getage() { return sage; public int getjava() { return sjava; public static void main(string[] args) {

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

输入 project name 选择完成

无类继承.key

软件工程文档编制

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

JavaIO.PDF

EJB-Programming-4-cn.doc

chp6.ppt

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

untitled

PowerPoint Presentation

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1

untitled

《大话设计模式》第一章

extend

Microsoft Word 軟體設計第二部份範例試題_C++_ _1_.doc

基于CDIO一体化理念的课程教学大纲设计

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

第二章 Java 语法基础 实验目的 (1) 常量 变量与数据类型 a. 掌握 Java 的常量 变量声明及使用方法 b. 掌握 Java 各种数据类型的使用 c. 掌握基本的输入输出方法 (2) 运算符与表达式 a. 掌握算术运算 关系运算 逻辑运算, 及优先关系 b. 掌握表达式的使用 (3)

Chapter 9: Objects and Classes

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

untitled

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Microsoft PowerPoint - string_kruse [兼容模式]

数据结构与算法 - Python基础

C/C++ - 文件IO

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Guava学习之Resources

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

全国计算机技术与软件专业技术资格(水平)考试

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

java 难 试卷 总分 题号 一 二 三 四 五 题分 得分 得分 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下面选项中, 关于 PrintStream 类描述错误的是 ( ) A PrintStream 可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出 B P

3.1 num = 3 ch = 'C' 2

EJB-Programming-3.PDF

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

untitled

untitled

Microsoft Word - 第3章.doc

全国计算机技术与软件专业技术资格(水平)考试

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

《C语言程序设计》第2版教材习题参考答案

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v

附录J:Eclipse教程

Guava学习之CharSequenceReader

02

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

電機工程系認可證照清單 /7/1

Microsoft Word - ch04三校.doc

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Ps22Pdf

Microsoft Word - __日程_定__[1]

Ps22Pdf


96年特種考試第一次司法人員考試試題解答

untitled

Microsoft Word - 01.DOC

Swing-02.pdf

untitled

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

第3章.doc

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

The Embedded computing platform

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

Transcription:

第五章数组 实验目的 (1) 掌握一维 二维数组的定义及初始化方法 (2) 掌握循环结构域数组相结合解决问题的方法 (3) 理解数组下标和数组元素间的关系 (4) 掌握 List 类的使用方法 实验范例 1 静态数组 (1) 数组例 1:( 一维数组 ) 输入一行字符, 分别统计出其中英文字母 空格 数字和其它字符的个数 int digital = 0; int character = 0; int other = 0; int blank = 0; char[] ch = null; Scanner sc = new Scanner(System.in); String s = sc.nextline(); ch = s.tochararray(); // 将字符串转换成字符数组 for (int i = 0; i < ch.length; i++) { if (ch[i] >= '0'&& ch[i] <= '9') { digital++; else if ((ch[i] >= 'a'&& ch[i] <= 'z') ch[i] >'A'&& ch[i] <= 'Z') { character++; else if (ch[i] == ' ') { blank++; else { other++; System.out.println(" 数字个数 : " + digital); System.out.println(" 英文字母个数 : " + character); System.out.println(" 空格个数 : " + blank); System.out.println(" 其他字符个数 :" + other); 例 2:( 二维数组 ) 求一个 3*3 矩阵对角线元素之和

import java.util.scanner; Scanner scanner = new Scanner(System.in); int[][] number = new int[3][3]; System.out.println(" 请输入 9 个整数 :"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { number[i][j] = scanner.nextint(); System.out.println(" 输入的 3 * 3 矩阵是 :"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { System.out.print(number[i][j] + " "); System.out.println(); int sum = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == j) { sum += number[i][j]; System.out.println(" 矩阵的对角线元素之和为 :" + sum); 2 列表类( 动态数组 ) 系统常用类 : (1) 列表类 :ArrayList Vector LinkedList 三个类均实现了 List 接口, 前两者是实现了数组结构, 后者是链表结构 ArrayList 和 Vector 的区别 :Vector 支持多线程同步, 但效率较低 ( 也就是说两个线程同时修改 Vector 会抛出异常 ) List 集合常用方法 :add clear contains get isempty remove size toarray ArrayList 类常用方法 :Add AddRange Remove RemoveAt RemoveRange Insert InsertRange ToArray ArrayList 继承自 List, 故 ArrayList 可使用 List 方法注 : 要实现队列 栈, 一般会使用 LinkedList 例 3: 使用 ArrayList

public static void main(string args[]) { List list = new ArrayList(); // 此处 ArrayList 类实现了 List 接口, 下面可直接使用 List 接口的方法 list.add("a"); // 添加元素 list.add("b"); list.add("c"); System.out.print(" 原来列表为 :"); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); System.out.println(); System.out.println("list[0]=" + list.get(0)); // 取第 0 个元素 list.remove(0); // 删除元素 System.out.print(" 删除后列表为 :"); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); System.out.println(); System.out.println("size=" + list.size()); // 显示列表大小 例 4: 使用 LinkedList 实现队列 栈的功能 LinkedList l = new LinkedList(); l.add("one"); l.add("two"); l.add("three"); l.add("four"); l.add("five"); System.out.println(l); // 队列 l.addlast("six"); // 相当于入队列的 Push 操作 l.removefirst(); // 相当于出队列的 Get 操作 System.out.println(l); // 栈 l.removelast(); // 相当于出栈的 Pop 操作 l.removelast(); l.addlast("seven"); // 相当于入栈的 Push 操作 System.out.println(l);

凡涉及 List 类排序的问题, 需要构造一个比较器 Comparator, 告诉编译器用什么方式来比较, 构造器的构造可参照下述程序的代码 另外, 例 5 中的泛型语法, 只能使用 Java1.5 以上的编译器版本, 对于 Java1.5 以下的版本, 只能通过构造类 (Class) 来实现实现比较器 Comparator, 具体请参照例 6 开启 Java1.5 版本的编译器方法 : 菜单 --> 项目 --> 属性 --> Java 编译器 --> 选择 JDK1.5 以上版本 例 5:( List 类的比较器 Comparator 构造问题 使用泛型构造, 只适用于 Java1.5 以上版本 ) 使用 List 类, 建立 2 条整数类型的序列, 并将它们合并 去重复 List<Integer> list1 = new ArrayList<Integer>(); // 泛型语法, 只能够 Java1.5 以上使用 List<Integer> list2 = new ArrayList<Integer>(); list1.add(1); list1.add(2); list1.add(3); list1.add(8); list2.add(3); list2.add(4); list2.add(5); list2.add(6); List<Integer> list = new ArrayList<Integer>(); list.addall(list1); list.addall(list2); System.out.println(list); // 构造比较器 Collections.sort(list, new Comparator<Integer>() { Public int compare(integer o1, Integer o2) { return o1 - o2; ); System.out.println(list); for (int i = 1; i < list.size(); i++) { if (list.get(i) == list.get(i - 1)) { list.remove(i); System.out.println(list);

注 : 下面例子 ( 例 6) 涉及 第七章类和对象 内容, 故可先看完第七章再看下面例子 例 6: 使用比较器 ( 使用类构造比较器, 适用于所有版本 ) 使用 List 建立学生 ( 类 ) 的列表, 并使用学生 ( 类 ) 的属性 :.name,.age 分别排序 ( 使用 List 的.sort 方法, 即便是简单的数据类型, 都要封装成 Object 类型 ) class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; public String getname() { return this.name; publicint getage() { return this.age; Public class Prog1 { Student zlj = new Student(" 丁晓宇 ", 21); Student dxy = new Student(" 赵四 ", 22); Student cjc = new Student(" 张三 ", 11); Student lgc = new Student(" 刘武 ", 19); //List<Student> studentlist = new ArrayList<Student>(); // 只能在 Java1.5 以上版本使用 List studentlist = new ArrayList(); studentlist.add(zlj); studentlist.add(dxy); studentlist.add(cjc); studentlist.add(lgc); Collections.sort(studentList, new SortByAge()); for (Iterator iter = studentlist.iterator(); iter.hasnext();) { Student st = (Student) iter.next(); System.out.println(st.getName() + " / " + st.getage()); System.out.println(" = "); Collections.sort(studentList, new SortByName()); for (Iterator iter = studentlist.iterator(); iter.hasnext();) { Student st = (Student) iter.next(); System.out.println(st.getName() + " / " + st.getage());

class SortByAge implements Comparator { // 年龄比较器 public int compare(object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; if (s1.getage() > s2.getage()) return 1; return 0; class SortByName implements Comparator { // 姓名比较器 public int compare(object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; return s1.getname().compareto(s2.getname()); (2) 迭代器 :Iterator 遍历列表类也可以使用迭代器,Iterator 类常用方法 :hasnext(), Next() 例 7: List l = new ArrayList(); l.add("aa"); l.add("bb"); l.add("cc"); // 迭代器用于 for 循环 for (Iterator iter = l.iterator(); iter.hasnext();) { String str = (String) iter.next(); System.out.println(str); // 迭代器用于 while 循环 Iterator iter = l.iterator(); while (iter.hasnext()) { String str = (String) iter.next(); System.out.println(str);

练习题目 5-1. 数组 a 中存有 n 个整数, 输出数组 a 中的值后, 输入一个正整数 m, 将 a 中各数顺序向 后移 m 个位置, 最后 m 个数变成最前面的 m 个数, 再输出数组 a 5-2. 有一个 3* 4 的矩阵, 每个元素的值是 100-999 之间的随机整数 找出该矩阵中每行元素 的最大值, 存入一个一维数组中 输出原始矩阵和结果矩阵 ( 随机数可使用 Math 类或 Random 类产生 ) 5-3. 将 1, 2, 6, 14, 25, 36, 37, 55 存入数组 a 输入一个数, 要求按原来的规律将该数插入数 组中, 按数组下标顺序输出所有元素 ( 提示再建一个数组 b, 元素个数比 a 多一个 ) 5-4. Arrays 类是 java.util 包中一个关于数组操作的系统类 数组 a 是 {1,3,7,30,45,70, 数组 b 为 {4,31,39,60,82,93, 分别用和不用 Arrays 类, 编写程序实现将 a 和 b 合并入数组 c, 并保 持升序排列 *5-5. 26 个英文字母围成一圈, 以字母 A 为 1, 依顺时针方向计数数到 5 的倍数时, 将对应 的字母划去, 知道所有字符都被划去时为止 ( 要求 : 使用 ArrayList) *5-6. 使用 List 类创建 9 个随机整数的序列, 按升序排序后, 删除中间的元素