




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8讲数组(下)字符数组数组实例多维数组ArrayList类对象数组数组的声明和创建数组的赋值和引用数组的应用数组排序掌握二维数组的创建方法了解ArrayList类和对象数组上讲内容回顾理解字符数组的概念了解使用字符数组的步骤:声明数组引用变量、创建数组、初始化数组和处理数组掌握字符数组的应用教学目标字符数组字符数组中的每个元素都是字符类型的数据,它的创建方法与一般的数组相似。创建如: charstr1[]=newchar[10];语句声明并创建了字符数组str1,该数组中可以存储10个字符。字符数组可以初始化。例如:
charstr2={'a','b','c','d','e'};其中,str2是一个字符数组,共有5个元素,str2[0]为'a',str2[1]为'b',str2[2]为'c',str2[3]为'd',str2[4]为'e'。
字符数组赋值字符数组的元素可以被赋值。例如,s2[1]='d';下面通过for循环语句给一个字符数组赋值。
charstr[]=newchar[100];
for(inti=0;i<26;i++)
str[i]='A'+i;经过上述循环后,数组str中将存储26个大写字母。字符串与字符数组字符串不是字符数组,但是可以转换为字符数组,反之亦然。字符串和字符数组之间的转换有以下几种形式:
1.使用toCharArray方法将字符串转换为字符数组。例如:
char[]charArray="word".toCharArray();则charArray[0]是'w',charArray[1]是'o',charArray[2]是'r',charArray[3]是'd'。
字符串与字符数组
2.使用String(char[])构造方法或valueOf(char[])方法,将字符数组转换为字符串。例如,下面语句使用String构造方法从数组构造了一个字符串。
Stringstr=newString(new
char[]{‘w’,’o’,’r’,’d’});下面语句使用valueOf方法从数组构造了一个字符串。
Stringstr=String.valueOf(new
char[]{‘w’,’o’,’r’,’d’});从键盘输入一个字符串,请判断该字符串是否是回文回文是指该字符串顺序和逆序是一样的,例如mom是回文。本程序提示用户从键盘输入一个字符串,用while循环来比较字符并且确定字符串是否是回文。使用循环检查字符串的第一个字符是否和最后一个字符一样。如果是,检查第二个字符是否和倒数第二个字符一样。这个过程持续到检查出不相同的字符或字符串中的所有字符都已检查完,若字符串中含有奇数个字符,则不检查中间的字符。回文程序publicstaticboolean
comp(Strings){
inti=0;char[]charArray=s.toCharArray();
while(i<s.length()/2){
if(charArray[i]!=charArray[s.length()-1-i]) returnfalse; i++; } returntrue;}实例1例5.10定义一个double型数组,输入数组的所有元素,求出数组元素的最大值和最小值并输出。分析:只需要定义一维数组,设置两个变量,分别存放最大值和最小值,然后与数组中各个元素比较,找出最大值和最小值。实例1(续)publicclassEx5_10{publicstaticvoidmain(String
args[]){double[]x={1.0,5.0,9.0,13.0,45.0,34.0,23.0,12.0,11.0,7.0};doublemax=x[0],min=x[0];
for(inti=1;i<x.length;i++){
if(x[i]>max)max=x[i];
if(x[i]<min)min=x[i];}
System.out.println(“数组元素的最大值:\t"+max);
System.out.println("数组元素的最小值:\t"+min);}}将数组的第一个元素作为初始最大值和最小值,存放在变量max和min中,即max=x[0],min=x[0]。数组中其余的元素逐个与max、min比较,若大于max则将该元素值赋予max,若小于min则赋予min。实例2整型数据交换参数传递方法:基本数据类型:值传递,改变方法内形参的值不会影响实参的值;引用数据类型:引用(地址)传递,改变方法内形参的值会影响实参的值。publicstaticvoidswap1(intn1,intn2){
intt=n1; n1=n2; n2=t; }publicstaticvoidswap2(int[]num){
intt=num[0]; num[0]=num[1]; num[1]=t; }实例2(续)整型数据交换publicclassEx5_3{publicstaticvoidmain(String
args[]){
int[]a={10,9};
System.out.println(“交换前:”+a[0]+”,”+a[1]); swap1(a[0],a[1]);
System.out.println(“基本类型交换(swap1)后:”+a[0]+”,”+a[1]); swap2(a);
System.out.println(“引用类型交换(swap2)后:”+a[0]+”,”+a[1]);} }二维数组
声明二维数组的格式有如下两种:数据类型[][]数组名;数据类型数组名[][];创建二维数组的方法,使用关键字new。格式如下:数组名=new数据类型[行长度][列长度];可以使用一个简化的方式来声明、创建和初始化二维数组。如,int[][]array={{1,2,3},{4,5,6},{7,8,9},{11,12,13}};二维数组示例定义一个整型的二维数组,分行输出每行数组元素并求所有元素之和。publicclassEx5_7{publicstaticvoidmain(String[]args){
int
i,j,sum=0;
intb[][]={{1,2,3},{4,5,6,7,8},{9,10,11,12,13,14,15}};
for(i=0;i<b.length;i++){
for(j=0;j<b[i].length;j++){ sum+=b[i][j];
System.out.print(b[i][j]+"\t"); }
System.out.println(); }
System.out.println("sum="+sum);} }
ArrayList类Java中数组的大小在创建数组时给出,一旦给出数组大小,就不可能再改变。有时程序中要用到大小不确定的数组,这时可以用两种方法解决:一是定义尽可能大的数组;二是使用java.util包中的ArrayList类,这个类实现了与数组类似的数据结构,还可以根据程序的需要自动改变大小。它的使用与数组有一些区别。下面的语句创建了一个ArrayList对象mlist,
ArrayList
mlist=newArrayList();类ArrayList的对象mlist中可以存放基本数据类型、对象等元素。ArrayList类的几个方法add()、get()和size()。add()方法用来向mlist中增加元素,其参数可以是基本数据类型、对象。get()方法用来得到mlist的各个元素,其参数为整型数据。例如,mlist.get(0)得到mlist的第一个元素。size()方法用来获得mlist的大小,使用mlist.size(),没有参数。把0~10的阶乘值用大整数BigInteger显示在屏幕上。importjava.math.BigInteger;importjava.util.ArrayList;publicclassEx5_8{publicstaticvoidmain(String[]args){
ArrayList
alist=factorial(11);
for(inti=0;i<alist.size();i++)
System.out.println(i+"!="+alist.get(i));}publicstaticArrayList
factorial(intx){
ArrayList
alist=newArrayList();alist.add(BigInteger.valueOf(1));
for(inti=alist.size();i<x;i++){
BigInteger
lastfact=(BigInteger)alist.get(i-1);
BigInteger
nextfact=lastfact.multiply(BigInteger.valueOf(i));
alist.add(nextfact);}returnalist;}}ArrayList类的应用示例(续)程序中factorial(intx)是一自定义的静态方法,该方法有一个整型参数,返回值类型为ArrayList类对象。方法的功能是求0到x中所有整数的阶乘值,将结果存放到ArrayList类对象中并返回结果。大整数不是基本数据类型,它们的乘法不能用运算符*,而要使用大整数类的multiply()方法求乘积。multiply(BigInteger
val)
ReturnsaBigIntegerwhosevalueis(this*val).valueOf(long
val)
ReturnsaBigIntegerwhosevalueisequaltothatofthespecifiedlong.对象数组数组类型为对象的数组称为对象数组。用new为该数组分配内存:Peopleobj[]=newPeople[2];然后用new为每一个作为数组元素的对象分配内存:obj[0]=newPeople();可以按以下方法使用:obj[0].name=“张三”;对象数组和基本数据类型的数组一样,可以作为方法的参数或方法的返回值。在main()方法中,就是一个String类的对象数组作为方法参数。注意:对象数组声明后,不能立刻存放数据。因为对象数组的声明只会产生对象的引用,并没有产生对象的实例。实例:选择排序算法思想:假定对一组无序数进行升序排序。选择排序就是每次寻找这一序列中最大的数,并将其与序列的最后面数交换位置,然后寻找未排序序列中的最大数与最后面数交换位置,依次类推直到全部排序完成。选择排序对数列:2843715,用选择法排序。选择8(最大的数字)并与5(数列中最后一个数字)交换:2543718在未排序数列中找出最大数7,将7和1的位置交换,新的数列:2543178继续相同的过程,最后整个数列将是从小到大的排序: 123457828437152jkimax请把数列『2843715』按从小到大顺序排序publicclassEx5_4{ staticvoidselectSort(int[]list){
for(inti=list.length-1;i>=1;i--){
intmax=list[0];
intk=0;
for(intj=1;j<=i;j++){
if(max<list[j]){max=list[j]; k=j; } }
if(k!=i){ list[k]=list[i];
list[i]=max; }}}选择排序(续)
publicstaticvoidmain(String[]args){
int[]mList={2,8,4,3,7,1,5};
System.out.println("beforeis:");
printList(mList);
selectSort(mList);
System.out.println("\nafteris:");
printList(mList);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼师直播考试试题及答案
- 菏泽教编考试试题及答案
- 会员营销考试试题及答案
- 消防维护考试试题及答案
- 重庆邮政考试试题及答案
- 2025-2030中国医用X射线防护手套行业市场发展趋势与前景展望战略研究报告
- 2025年地理高考复习 微专题 特殊天气系统和现象(讲义)(解析版)
- 2025重庆建峰工业集团有限公司招聘77人笔试参考题库附带答案详解
- 2025苏能(锡林郭勒)发电有限公司招聘12人笔试参考题库附带答案详解
- 2025国际租赁合同 国际贸易合同范本
- 上海上海闵行职业技术学院招聘60人笔试历年参考题库附带答案详解
- 【教学评一体化】第五单元 观世间万物悟人生哲思【大单元公开课一等奖创新教学设计】新统编版语文七年级下册名师备课
- 广西中药深加工项目投资计划书
- 私家侦探合同协议
- 第18课《井冈翠竹》课件-2024-2025学年统编版语文七年级下册
- 公立医院成本核算指导手册
- 第七章-生物医学工程的伦理问题
- MOOC 中医与辨证-暨南大学 中国大学慕课答案
- 年产10吨功能益生菌冻干粉的工厂设计改
- 《焦虑症基础知识》PPT课件.ppt
- 基于钻石模型的南通纺织产业竞争力分析
评论
0/150
提交评论