Java程序设计 第6章 数组.

Slides:



Advertisements
Similar presentations
如何學好數學? 黃駿耀老師
Advertisements

國軍花蓮總醫院門、急診及住院費用收費標準及建議
北京市市级公费医疗改革知识简介 (根据有关会议内容整理,仅供参考) 人事科 二〇一一年十二月.
关于精品课程建设的 组织、管理与思考 天津市教育委员会 叶 庆 二〇一〇年三月六日.
梁皇寶懺懺文法意 主講者︰永餘法師 2009/5/20 永餘編製.
第五节 人类对细菌和真菌的利用 临夏市第二中学 杨启铺.
活化經典,豐富人生 豫卦 喜樂從眾,豫備無患
习作6 调查报告.
严格发展党员程序 努力做好学校党建工作.
一、为什么最终目标是村支书? 建设社会主义新农村,响应国家政策 面向基层就业,打造辉煌人生 我的农村生活 我的父亲。链接…
十八 宠物也会伤害你 武昌区武大二附小 李桔. 十八 宠物也会伤害你 武昌区武大二附小 李桔.
學校待遇福利退休撫卹講義 師資薪傳團隊第二組 主講人:劉斌科主任.
千古绝调 感人心者莫先乎情 祭十二郎文 “感人心者,莫先乎情。一切最动人的文字都是从心底流淌出来的。《祭十二郎文》,一个沉重的命题,生于死,一个思考的命题,
小六實用文格式及範例.
    第三编 第三个十年 (1937年7月—1949年9月)(28学时).
“十二五”广东省科技计划项目经费监管培训
实验五 茎的形态结构 一、实验目的: 1、 了解植物茎的形态结构 2、 了解不同种类双子叶植物茎的形态结构和发育的基本过程
96年多元入學進路宣導.
上海构建现代职业教育体系的探索 上海市教科院职成教研究所 陈 嵩 2015年3月1日 1.
医患双方权利义务 法医学院 高丽萍.
大志者,心忧天下,为国家昌盛效力。 大智者,心有民生,为黎民百姓尽心。 孺子牛 勤务员 公务员.
合格评估需要把握的关键要素 下面谈谈我的理解和认识。我把关键要素概括为四句话: “三个基本”不可少, “三新”是否解决好。
基于教学情境剧场化 的人文“创智课堂” 的实践研究.
第三章 教育与人的发展 第二节 人的身心发展 制作人:朱魏.
“公平”是最热的关键词 1、胡锦涛首次进行“总动员”,提出“在促进发展的同时,把维护社会公平放到更加突出的位置” 。
外 套 各式領型與變化 武 玫 莉 製 作.
第4节 人体对食物的消化吸收.
FUZHUANGZHITUYANGBANZHIZUO
学校春季呼吸道传染病预防知识 连云港市疾病预防控制中心
中国管理科学发展探索 成思危 2006年8月18日于上海复旦大学.
社区妇幼保健工作 江东区妇幼保健院 胡波瑛.
胎教.
[聚會時,請將傳呼機和手提電話關掉,多謝合作]
营养要均衡.
主考官眼中的面试 ——面试主考官教你备战2016年国考面试 主讲老师:李海鹏.
智慧宁波 智慧财税 . 宁波市地方税务局.
大家平安 欢迎参加祷告会.
《念奴娇.赤壁怀古》说课 南丰一中 刘勇.
牙 髓 病 分 论 分  类 临床表现 诊  断 鉴别诊断.
蔬菜大觀園 讓我們來認識常見的蔬菜.
落實導師生涯輔導 經驗分享 ~以興大附農為例
第五章 列宁的新闻论著及其对克思主义新闻学的发展
第十章 茶叶精制加工 本章重点: 精制目的和精制原理 品质规格 毛茶验收归堆.
和谐社会 社会主义新农村 农村新型合作医疗 三农问题
威尼斯商人 莎士比亚(英国) 1564—1616年 淮安曙光双语学校李龙.
窦娥冤 关汉卿 感天动地 元·关汉卿.
目錄 服務地點 南寮 世光教養院 飛鳳山 長安養老院 尖石國小 內灣 大華停車場 上智國小 二重國中 班級 領隊教師 參與人數 (人次)
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
知其不可而为之.
中国画家协会理事、安徽省美术家协会会员、 工艺美术师、黄山市邮协常务理事余承平主讲
渤海商品交易所 丹东玉米交易中心 全国统一客服电话:
汉字的构造.
诵读欣赏 古代诗词三首.
102學年度預算編製說明會 主辦單位:會計室 102/02/22.
义务教育新课程标准实验教科书 九年级历史下册课堂教学设计
股市不傳之秘 甘氏矩陣圖/價格推算 簡介、基礎學習步驟 1、學習觀念 2、基礎看圖法 A.大數推算 B.基礎角度線推算.
克薩技術 vs 傳統配種 克薩人.
贴近教学 服务师生 方便老师.
六年级 语文 下册 第四单元 指尖的世界.
(浙教版)四年级品德与社会下册 共同生活的世界 第四单元 世界之窗 第二课时.
第9课 北美大陆上的新体制 导入新课 新课教学 课堂小结 知识结构 巩固练习
第 7 章 陣列 (Array).
4.1 一維陣列 4.2 for(:) 迴圈 4.3 動態陣列 4.4 二維陣列 4.5 非矩形陣列
議題: 複製人.
Xián 伯 牙 绝 弦 安徽淮南市八公山区第二小学 陈燕朵.
4. 曾文水庫越域引水環評報告彙整 資料來源: 1. 曾文水庫越域引水下游輸水工程環境影響差異分析暨環境現況差異分析及對策檢討報告(定稿本)
方格紙上畫正方形.
所得稅法第14條、第126條修正條文 薪資所得計算方式二擇一 定額減除 特定費用減除 維持現行薪資所得特別扣除額20萬元減除方式
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
Presentation transcript:

Java程序设计 第6章 数组

学习目标 理解数组的概念 掌握声明数组变量、创建数组、初始化数组 掌握如何访问数组元素 掌握向方法传递数组 了解如何复制数组 掌握搜索和排序算法 掌握多维数组的声明和创建

数组 数组(array)是相同类型变量的集合。 double[] myList = new double[10]; 5.6 4.5 3.3 13.2 4 34.33 34 45.45 99.993 1123 myList[0] myList[1] myList[2] myList[3] myList[4] myList[5] myList[6] myList[7] myList[8] myList[9] 引用 myList

声明数组引用变量 语法 数组变量是引用类型的变量,声明数组变量并不分配内存空间。 或者 datatype[] arrayRefVar; 例如: double[] myList; 或者 datatype arrayRefVar[]; double myList[]; 数组变量是引用类型的变量,声明数组变量并不分配内存空间。

创建数组 使用new操作符创建数组。 声明和创建在一条语句中。 arrayRefVar = new datatype[arraySize]; 例如: myList = new double[10]; 声明和创建在一条语句中。 datatype[] arrayRefVar= new datatype[arraySize]; 或者 datatype arrayRefVar[] = new datatype[arraySize]; double[] myList = new double[10]; double myList[] = new double[10];

数组初始化 新创建的数组对象,其元素根据类型被设置为默认的初始值。 数组可以在声明后的花括号中提供初始值。 数值类型为0 字符类型为’\u0000’ 布尔类型为false 引用类型为null 数组可以在声明后的花括号中提供初始值。 double[] myList = {1.9, 2.9, 3.4, 3.5} 或者 double[] myList; myList = new double[] {1.9, 2.9, 3.4, 3.5}

访问数组 一个数组的大小在创建这个数组之后不能被改变。可以用以下语法进行访问数组的长度: arrayRefVar.length 例如: myList.length的值为10。 数组元素通过索引进行访问。元素的索引从0开始,范围从0到length-1。 arrayRefVar[index] myList[0]表示数组的第一个元素 myList[9]表示数组的最后一个元素

增强的for循环(JDK 1.5) JDK 1.5引入一个新的for循环,可以不用下标就可以依次访问数组元素。语法: for(elementType value : arrayRefVar) { } 例如 for(int i = 0; i < myList.length; i++) { sum += myList[i];  for(double value : myList) { sum += value;

例 测试数组 编写程序,读入6个整数,找出它们中的最大值,并统计最大值出现的次数。 Example:TestArray.java

例 划分成绩等级 编写程序,读入学生分数,求最高分,然后根据下面的规则指定等级: 如果分数>=best – 10, 等级为A 如果分数>=best – 20, 等级为B 如果分数>=best – 30, 等级为C 如果分数>=best – 40, 等级为D 否则等级为F Example:AssignGrade.java

复制数组 直接使用赋值语句不能实现数组的复制,结果是两个数组引用变量指向同一个数组对象。 复制数组的方法 使用循环来复制每个元素 使用System.arraycopy方法 使用数组的clone方法 x: 1 y : 1 copy 基本类型 x : ref y : ref copy array 数组类型

向方法传递数组 可以将数组变量作为实参传递给方法。 也可以从方法中返回数组。 基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。 数组引用变量中传递的是对象的引用,修改形参,将改变实参引用的数组对象。 也可以从方法中返回数组。 实参 : 1 形参 : 1 copy 基本类型 实参 : ref 形参 : ref array 数组类型

例 传递数组 编写两个方法交换数组中的两个元素。 swap方法交换两个int类型的参数 swapFirstTwoInArray方法交换数组参数的前两个元素 Example:TestPassArray.java

例 统计每个字符出现的次数 编写程序,完成以下任务 随机产生100个小写字母,并保存在一个字符数组中。 计算数组中每个字母出现的次数。 Example:CountLettersInArray.java

搜索数组 线性搜索法(linear searching)将一个值与数组的每个元素进行比较。如果找到相同的元素,返回元素的索引;否则返回-1。 二分搜索法(binary searching)是在一个已排序的数组中搜索特定元素。假设数组已按升序排列,将关键字与数组中间元素进行比较: 如果关键字比中间元素小,则在前一半数组中搜索; 如果关键字与中间元素相同,查找结束; 如果关键字比中间元素大,则在后一半数组中搜索。 Example:LinearSearch.java, BinarySearch.java

排序数组 2 9 5 4 8 1 6 选择排序算法:假设将数组按升序排列 算法 将列表中的元素最大值放在最后一个位置 将剩下元素的最大值放在倒数第二的位置 以此类推,直到剩下一个数为止。 2 9 5 4 8 1 6 Example:SelectionSort.java

Arrary类 java.util.Arrays.sort() java.util.Arrays.binarySearch() java.util.Arrays.equals() java.util.Arrays.fill()

二维数组 声明数组引用变量 创建数组并将引用赋值给变量 refVar = new dataType[rowSize][colSize]; dataType[][] refVar; 创建数组并将引用赋值给变量 refVar = new dataType[rowSize][colSize]; 在一条语句中声明和创建数组 dataType[][] refVar = new dataType[rowSize][colSize]; 或者 dataType refVar[][] = new dataType[rowSize][colSize];

int[][] matrix = new int[4][5] 二维数组示意图 [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] 7 [0] [1] [2] 1 2 3 4 5 6 7 8 9 10 11 12 [3] int[][] matrix = new int[4][5] matrix[2][1] = 7 int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} };

二维数组的长度 二维数组的每个元素是一个一维数组。 数组X的长度是数组X的元素的个数,可由X.length得到。 元素X[i]是一个一维数组,其长度可由X[i].length得到。 X[0][0] X[1][0] X[2][0] X[0] X[1] X[2] X X[0][1] X[1][1] X[2][1] X[0][2] X[1][2] X[2][2] X[0][3] X[1][3] X[2][3] X.length is 3 X[0].length is 4 X[1].length is 4 X[2].length is 4

不规则数组 二维数组的每个元素(数组)的长度可以不同。 创建二维数组时,可以只指定第一下标。二维数组的每个元素为空,必须创建每个元素数组。 例如: int[][] x = new int[5][]; x[0] = new int[5]; x[1] = new int[4]; x[2] = new int[3]; x[3] = new int[2]; x[4] = new int[1]; x[0][0] x[1][0] x[2][0] x[0] x[1] x[2] x x[0][1] x[1][1] x[2][1] x[0][2] x[1][2] x[2][2] x[0][3] x[1][3] x[0][4] x[3][0] x[3][1] x[4][0] x[3] x[4]

例 给选择题评分 编写程序,给选择题评分。设有8个学生10个问题,答案存储在一个二维数组中。每行记录一个学生的答案。输出每个学生的评分结果。 0 1 2 3 4 5 6 7 8 9 学生0 学生1 学生2 学生3 学生4 学生5 学生6 学生7 A B A C C D E E A D D B A B C A E E A D E D D A C B E E A D C B A E D C E E A D A B D C C D E E A D B B E C C D E E A D B B A C C D E E A D E B E C C D E E A D 答案 D B D C C D A E A D Example:GradeExam.java

例 使用数组计算所得税 美国的个人所得税根据纳税人情况和须纳税收入进行计算。编写程序,用户输入纳税人情况和须纳税收入,计算出2002年的所得税。 2002年美国个人所得税税率表 Example:ComputeTax.java

例 分数计算 编写程序计算班级中每个学生的总分。假设分数保存在三维数组中,数组的第1维代表学生,第2维代表试卷,第3维代表试卷的一部分的成绩。 部分0 部分1 部分2 部分3 部分4 部分5 部分6 学生0 学生1 学生2 学生3 学生4 试卷0 试卷1 试卷2 试卷3 试卷4 试卷5 试卷6 试卷7 Example:TotalScore.java