数组与函数课件_第1页
数组与函数课件_第2页
数组与函数课件_第3页
数组与函数课件_第4页
数组与函数课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

要商数一直串相关的数据,使用赵俎是必的逡落。

此外,若京程图片段经辛童复出现,则粉它定义感属

剧可有致地简化程序代妈。

域章童支介殆微俎的基域用法与简微的应用。

蚁殂(array)是由一解相同类型的变量所组观的剧

据类型,它们。一个共同的名繇表示。微组中拿个完

素则八下标来标示落数的值置。微组侬点数完素的复

集程度,令,一推及二推,工上的多瓶剧俎。

Java

一维数组

一瓶熬俎可。花及上千万个相同的照据,送蛉熬

据就像火车的一节节率厢,小梯微据串透起来就像一

列火率。

微殂和Java里的变量一曲也需要经过声明后才犍

使用。

6-1-1一推熟俎的声明与尚感的合配

要使用Java的数俎,处须经过两个步骤:

(1)3飒敷板、

(2)台配肉商令该数组。

这两个步骤的语法西干:

【格式6-1—施照殂的声明与合肥南落】4

1।।।।।।।।।।Java

“数据类型”是声明数组元素的数据'

类型,常见的类型有整数、浮点数与

字符等类型。“数组名”是用来统一

这群相同数据类型的名称,其命名规

则和变量相同;

剧据类型微俎名口;〃声蜗一瓶敷褪L

微组名二new数据类型[个剧];//今配肉商令微俎

数组所需的内存,其中“个数”是告诉

编译器,所声明的数组要存放多少的元素,

而“new”则是命令编译器根据括号里的个数,

在内存中配置一块块供该数组使用。

Java

4广

Q下面是一瓶微狙的声飒,并令配内商作该数俎的范例:

intscore[];//声明整型微俎score

score=newint[4];//今配肉商室间供整型剧俎

score使用,完素个殿,4

我上面第一行声飒诲型微俎score时,score可视,眼

组类型的变量。此时这个变量并没有包含值何肉察,

编用器伍会今配一块内卷给它,用来保腐媚向微俎实

体的地址,电画所示。

intscore[];

score尚未能向

?

score*熟殂实体的地

趾,所。score

的肉客,未知且

Java

“厂上圉声飒盘型微组

产明后要做内方合配的摇作,即上面第二行语句。

这一行会配置4个可供餐数保席的肉商堂闻,界也此

用花室间的参考地址赋令score变量。其彻存合配的

流程电千囹所示。

分配4个整数的内存空

图中的内存参考

地址是假<t--------

0x1000score=new

赋值,此值会因

环境的不同而异。score[3]0x1012

如第3章所述,把内存地址赋给

数组是属于非基Score变量score[2]I0x1008

本数据类型,因score[1]0x1004

此数组变量0x1000

score所模存的score[0]

并非数组的实体,

而是数组实体的

'参考地址。,

Ja®

4广

J【格式6-2声阚剧组的同时便合肥肉腐】

剧据类型数胆名[]=new数据类型[个盘J;

位Java中,国卷微剧据类型所占用的库节,4个

bytes,而整型剧组score可保卷的完素有10个,所山上

例中占用的治卷共有4*10=40个生节。下囹粉照组score

化,囹彬表示。

数组里元素的个数

数组名每一格代表一个元素,每个元素皆为int类型

剧俎的保存

Ja®

4广

6-1-2熬俎中无素的袤示方法

想要使用微殂里的完素,可。利用千标索完鼠。

Java的微俎下标褊号以0杆胎。的电,score[0]代表第0

个完素,score[1]代表第1个完素,score[9]g鼎组中第9

个完素。下囹,score微俎中完素的表示法及邮列方式。

数组名数组里的10个元素

0123456789

V

score

score[0],数组里第0个元素score[8],数组里第8个元素

赵组先奈的神列

Ja®

01〃app6_1,一旗徽祖

02publicclassapp6_1

03

04publicstaticvoidmain(Stringargs[])

05

06inti;

07int矶];//声明一个整型熬<a

08a=newint[3];〃台配内点室间供空型熬俎a使用,

其完索个熬,3

09

10for(i=0;i<3;i++)〃输出熬祖的内客

11System.out.print("a["+i+"]="+a[i]+",\t");

12

13System.out.println("\nlengthofarrayais"+a.length);

〃输出熬祖在盛

14}

0

15}A—)

Java

/*app6-1OUTPUT--

a[0]=0,a[1]=0,a[2]=0,

lengthofarrayais3

----------------------*/

程序解说

1.第7行声阚整型剧俎a,第8行配置了一块内方室间,。

供整型微俎a使用,其完素个剧,3。

2.第10〜11行,利用for循环输出熟殂的由客。由于程序

中界W,令半微组先素赋他,出此输出的信鼎会是0。

3.第13行输出微俎的衣盛。此例中微组的在盛,3,即代

表熟俎完青的个数有3个。

X

Java

d"【格式6-3微殂衣度的取得】

剧娘名.length

若要取得app6_1中所声飒的微版a的完素小微,Z

要森鼎^a的名称后面加上“.length”即可。即:

।।a.length〃给出熬俎的衣度»

送甘有何必处呢7它是微组的裔使用率。及Java我熬

殂上所给予的祥但,〃.length”像是一颗小小的螺丝

钉,左程》的编写上[房意想系刊的致累。

Java

d'」・3照俎初他的贼值

若想直接点声明时就令马数殂初他,可也利用上

括号。只要点殿组的声飒格式后面森加上初值的赋值

即可。州电:

【格式6-4数俎初他的赋他】

剧据类型剧祖名[尸{初值0,初值1,…,初他n};

大括号里的初他会做洋播足令微俎的第0、1.......

n个完素。此外,声飒时并本需要粉数殂完素的个剧列

出,褊铎器会视所令手的初伍个数来法定微组的衣度。

数祖贼值范例:

intday[]={31,28,31,30,31,30,31,31,30,31,30,31);

II声阚畀赋值初值

JW・J

01//app6_2,一旗剧祖的赋值

02publicclassapp6_2

03{—

04publicstaticvoidmain(Stringargs[])

05{

06inti;

07inta[]={15,6,8};//声明一个整型剧组a,并敬值初值

08

09for(i=0;i<a.length;i++)〃输*赵殂的向客

10System.out.print("a["+i+"]="+a[i]+",\t");

11

12System.out.print("lengthofarrayais"+a.length);

13)

14)

〃app6-2OUTPUT------

a[0]=15,a[1]=6,a[2]=8,

lengthofarrayais3

__*/w

范例2;我出数殂无素的量大他与獴小他

01〃app6_3,比簌微组先素他的大小

02publicclassapp6_3

03{"

04publicstaticvoidmain(Stringargs[])

05{

06inti,min,max;

07intA[]={74,48,30,17,62);

〃声阚卷型剧俎A,并赋他初值

08

09min=max=A[0];

10System.out.print(HelementsinarrayAareH);

Java

axfor(i=0;i<A.length;i++)

12(

13System.out.print(A[i]+"H);

14if(A[i]>max)〃判断景大他

15max=A[i];

16if(A[i]<min)〃判断獴小伍

17min=A[i];

18)

19System.out.println(H\nMaximumis"+max);

〃输出秦入假

20System.out.println(HMinimumisn+min);

〃输出素小他

21)

22)

Java

4广

.*app6-3OUTPUT-------------------------

elementsinarrayAare7448301762

Maximumis74

Minimumis17

7

1.第6行声飒餐剧变量i做,循环控制变量及数俎的下标,,

另外也声飒腐及獴小值的变量minS獴大他的变量

maxo

2.第7行声飒整型微俎A,其微俎无素有5个。

3.第9行将minSmax的初他微,微组的第一个完青。

4•第10〜18行逐一输出微俎里的内察,并判断数俎里的

最上他导量小他.O

5.第19〜20行输出比较后的獴大他与景小他。

Java

二维数组

董蚣一瓶微俎可。处理一般简单的照据,但左实

除应用上仍显系足,所。Java也提供了二瓶剧组。

上的多瓶微俎。

6-2-1二旗剧俎的声飒号令配肉花

二旗鼎俎声飒的方式和一瓶数俎类何,内腐的

台肥也一曲是用new这个条越多。电下所示:

【二旗微殂的声珊格式1】

熬据类型熬殂名□口;

微俎名=new微据重型[行的个微][列的个微B___

£1~~।।।।।~~;।।।।x

Java

数据类型微组名[][]=new微据类型[行的个数][列的个数];

可用二瓶熟俎粉上表的微据保商起来,检数俎声飒

^>intsale[2][4]oJava*,由于int照据类型所占用的生

专,4个bytes,而整型剧做sale可保商的无素有2*4=8

个,占用的内商关有4*8=32个室节。下囹,二瓶微组的

示意囹。

第第第第

每一格代表一个元素,每个元素皆为皿类型

Ja®

4,%

1,微殂中的〃第。行”代表业务员1,第0行的第0〜3列,

业务员1的第一〜四专业债,

2.〃第1行”代表业务员2,第1行的第。〜3列为业务员2

的第一〜四季业债O

3.两个业务员的业俄保腐残微组后,就可。用微俎计案

出2002年总业债或是票季的业债等倍息。

[二旗微组初他的赋值格式】

照据类型熟俎名□□={{第0行初值),

{第1行初他),

{…},

{第n行初值}};

Java

4"注意:

1.用户系需要定义微组的衣盛,因此在数殂名后面

的中括号里弄系处礁入G何的内察。此外,京大括

号河迷市几组大括号,每俎大括号河的初他会侬格

娟笑作微俎的第0、1........n行完素。电下面的微

版sale声飒及初值的赋值范例:

intsale[][]={{30,35,26,32},

〃二旗鼎俎的初依赋伍{33,34,30,29}};

2.每行的完素个熟恭同的二旗鼎俎,州电:

intmatx[][]={{31,12,14,11},〃每行完索个剧系同的二旗鼎组

{33,34,30},

{12,81,32,14,17});f且

Java

▲.以得二瓶微组的行微与特定行的完素的个剧

【取得二瓶微组的行照与特定行的完速的个剧】

照俎名length〃取得熬姐的行熬

熬殂名[行的接标值].length〃取得特定行无素的个照

若要取得二瓶微俎的行数,只要用数版名加上

”.length”即可,若要取得微殂中特定行的完漆的个数,

则须左微组名后面加上孩行的下标他,森加上”.length”。

例电:

matx.length〃必算剧祖matx的行熟,其他W3

matx[O].length〃必算照组matx的第0行无素的个鼎,其他,4

matx[2].length〃必算剧组matx的第2行完素的个熟,其他名5

Java

4*6-2-2二维数姐无素的引用及扬冏

二瓶微俎无素的输入与输出方式与一瓶鼎俎相同,

,工二瓶鼎俎sale,例,粉两个业务员的掇售业债森程

格中直接赋他后,备计算该公司2002年保险产品的总

输售量,程本及运行信鼎。

01//app6_4,二旗鼎俎的输入输出

02publicclassapp6_4

03{—

04publicstaticvoidmain(Stringargs[])

05{

06inti,j,sum=0;

07intsale[][]={{30,35,26,32},{33,34,30,29}};

//>明数俎并赋他初值

Java

o8

o9

〃输出输售量并行算总褊售量

10for(i=0;i<sale,length;i++)

11(

业务员的业债台别,");

12System.out.print("”+(i+1)+”

13forO=0;j<sale[i].length;j++)

14(

15System.out.print(sale[i][j]+"");

16sum+=sale[i][j];

17)

18System.out.println();

19)

总输售量,修保单)

20System.out.println("\n20024”+sum+”

21)

}

Java

/*app6-4OUTPUT------------

业务员1的业债台别,30352632

业务员2的业椅台别,33343029

20024总输售量四249倍保单

-----------------------------*/

息程序解说

1,第6行声阚餐剧变量i、j做,外层与治层循球控制变量

及剧版的不标,i控制行的无素,j控制列的完素;而

sum则是用末商我所有微组完素他的总和,即总输售

量O

2.第7行声明一整型数组sale,并,剧俎完青联他为他,

国此微组完素共密8个。

3,第9〜18行输出熟俎里各完素的均察,并汇总各完素值。

4,第19行输出sum的牯鼎即,总微售量。g

Java

三维以上的多维数组

想要提裔殿俎的旗殿,旦要我声明照狙的耐候将

下标与中括号霁加一组即可。

所—三旗剧痛的声飒,intA[田口,

而四瓶熬姐,intA加口□,

…,4此类稚o

使用,旗微组时,输入、输出的方式和一、二旗

相同,但是急多一瓶,原套循环的层照就势须多一层,

所。旗殿越裔的微俎其复集度也就越富。心三旗微祖

,例,春声明鼎组时期赋他初伍,膏指其完素他输出

并计算总和。

雕।।।।।।।।।।4>

1।।।।।।।।।।Java

01//app6_5,三旗微殂

02publicclassapp6_5

03(-

04publicstaticvoidmain(Stringargs[])

05(

06inti,j,k,sum=0;

07intA[][][]={{{5,1},{6,7}},{{9,4},{8,3}}};

//声明微殂并赋他初值

08

09for(i=0;i<A.length;i++)

〃输出微俎勾客并行事总和

10for(j=0;j<A[i].length;j++)

iiiiii।।।

Java

11for(k=0;k<A[j].length;k++)

12{

13System.out.print(“A『+i+“]r+j+“][+k+”]=");

14System.out.println(A[i][j][k]);

15sum+=A[i]0][k];

16)

17System.out.println(nsum=n+sum);

18)

19)

Java

4广

/*app6-5OUTPUT—

A[0][0][0]=5

A[0][0][1]=1

A[0][1][0]=6

A[0][1][1]=7

A[1][0][0]=9

A[1][0][1]=4

A[1][1][0]=8

A[1][1][1]=3

sum=43

*/

由于使用的是三瓶微俎,所。城套循环哧三层,而

千标也有三个。若是一时无法怨彖三瓶徽俎,。所声明

的i*m*n微俎,例,可。咨观有i/Nn*n的二旗数俎/四

旗山上的多瓶烈做比较瘠心画形描念出O

O।।।।।।।।।।X

Java

6-4函数

徐剧(function)可。简化程格的转构,也可,4节省

褊写相同程本代鸡的时间,达到程序模块化的目的。

AJava里,徐照称,方法。

点每一个类里出现的main。即是方法。使用方法

耒编写程格代鸡市相咨多的必处,它可简化程序代妈、

精简唾复的程本流程,界可杷特定功犍的程序代妈独

或出来,使得程格花被计师得。专派残程序的开发上,

减少程序旗护的周存。

【声明方法,弄定又其内察】

返®优类型方法名(类型参照1,类型参微2,…)

(

方法的W体(body)

程格语句;

return表达式;

}

一个简单的范例:

01//app6_6,简单的范例

02publicclassapp6_6

03{—

04publicstaticvoidmain(Stringargs[])

06star();〃碉用star()方法

07System.out.println(',lloveJava");

08star();〃碉用star。方法

09}

10

11publicstaticvoidstar()//star()方法

12{

13for(inti=0;i<14;i++)

14System.out.print("*");〃输出14个星号

15System.out.print("\n");〃换行

16}

17)

/*app6-6OUTPUT-

**************

IloveJava

**************

--------------------*/5

Java

■app6_6中声明了两个方法,今别名main()Sstar。。

■国,main。是我图进入的越点,所。杷倜用star。的程

詹代妈编写森main。里。森main。的第6行倜用star。方

收,此时隹本的运行流程便会进到11〜16行的star()方

旅里执行。执行党毕后,程序返㈤main。方法,徒修

运竹第7行,输出“IloveJava”生符串。

■接房第8行以倜用star。方法,隹詹霁度进到第11〜16竹

的star。方法里运行。运行党后,返®main。方法里,

国main。方法接下未已接没市程序代鸡可供执行,手是

牯束我,app6_6。

app6_6star()方法倜用与运行的流程电画所示。

publicclassapp6_6{

publicstaticvoidmain(Stringargs[])

tilnitii:na

Ja®

6-4-2方法的永照与通向值

若方法有返回他,则及声阚方法瑞就须婿定返回数据

类型。同杂,若有参微要传递到方法内,则我方法的括号

内势领礁上所有的参微及其类型。的电;

01//app6_7,简单的范例一方法的参照与返回值

02publicclassapp16_7

03{—

04publicstaticvoidmain(Stringargs[])

05{

06intnum;

07num=star(7);〃传7令star。,并。num接收退命的微值

08System.out.println(num+nstarsprinted");

09)

Java

4广

j6-4-3将熟殂传递到方法里

方法系只可。用来传遢一般的变量,也可用来传遢

剧殂。本节獴衬在Java里弗何传遢数俎心及电何处理方

法的返回他是一瓶数俎得同敢。

修递一掖熬俎

要传遢一推剧组到方法里,只要播咽传人的参微是

一个微殂即可。app6_9是传递一瓶微组到largest。方法

的范例,由由gestj展收到此剧殂时,便会杷剧组的景

大值输出。

电干范例:

Si।।।।।।।।।।X

Java

',广

01//app6_9,简单的范例

02publicclassapp6_9

03

04publicstaticvoidmain(Stringargs[])

05(

06intscore[]={5,3,8,12,6,7};

//声一一—一俎score

07largest(scoi^);

〃将一始K^score传入largest。方法

08}''\.....................................

09粉蚊组score传入largest。方法里

10

5

Java

11publicstaticvoidlargest(intarr[])

12{\

13inttmp=arr[0];接收一旗的整数数祖

14for(inti=O;i<arr.length;i++)

15if(tmp<arr[i])

16tmp=arr[i];

17System.out.println("largestnum="+tmp);

18)

19)

/*app6-9OUTPUT—

largestnum=12

---------------------*/

5

Java

传递二推照俎

与一瓶微组类他,只要戒到方法里声阚传人的参

数是一个二旗熟俎中可。千例进行二旗数版的传遢。

杷二旗剧俎A传递到print_mat()方法里,弄点

print_mat()里把微俎他输出。

01〃app6_10,传递二旗剧组

02publicclassapp6_10

03{—

04publicstaticvoidmain(Stringargs[])

05{

06

07intA[][]={{51,38,82,12,34},{72,64,19,31}};

//定义二推数俎

।।।।।।।।।।X

Java

<*08printmat(A);

09)、将二旗数殂A传入print_mat()方法里

10

11publicstaticvoidprint_mat(intarr[][<

12

13for(inti=O;i<arr.length;i++)晨收二旗的整型殿祖

14

15for(intj=O;j<arr[i].length;j++)

16System.out.print(arr[i][j]+"");〃输出数组他

17System.out.print("\n");〃换行

18}

19}

20)

/*app6-10OUTPUT-

5138821234

72641931

-------------------*/

5

Java

4广

.

返向熬俎的方法

电累方法退㈤餐照,则领我声飒时我方法瑞冠上int

关桂生。

相疚,若返回的是一瓶的整型数俎,则须我方法嘛

而加上int[]。

若是返㈤二瓶的整型微俎,则加上int口口,心此类稚。

app6_11是返㈤二瓶恭殂的糅灯。将一个二瓶微

俎传入add彳0()方法中,戒add10()方法内将每一个完

漆加10之后返回它,獴后我main。里输出此剧组。电下

范例:

Java

X广

4oi//app6_11,微行返®二推剧板的方法

02publicclassapp6_11

03{"

04publicstaticvoidmain(Stringargs[])

05(

06intA[][]={{51,38,82,12,34},{72,64,19,31}};

〃定"二旗微组

07intB[][]=newint[2][5];

08B=add10(A);

〃碉用add10(),并杷返®的值微令剧组B

09for(inti=O;i<B.length;i++)〃输出薮俎的内密

10(

11for(intj=O;j<B[i].length;j++)

12System.out.print(B[i][j]+"");

13System.out.print("\n");

14)

.....................................................................................................iiiX

java

16

17publicstaticint[][]add10(intarr[][])

18{

19for(inti=O;i<arr.length;i++)

20for(intj=O;j<arr[i].length;j++)

21arr[i][j]+=10;〃物鼎版无米加10

22returnarr;//返回二瓶鼎祖

23)

24)

/*app6-11OUTPUT-

6148922244

82742941

-------------------*/

Java

d6-4-4递归方法

方法也可。用在递归(recursive),所褶遢归就是方法

本身©己倜用前己。

例由阶乘筛剧(factorialfunction),便可利用递归的方

式未完鼠:

fac(n)=1*2*L*N,n>=1(旅递归算法)

=n*(fac(n-1),n>=1«—算一)

遢归可让程本代码简洁,也可提裔运行的效率,

但使用时须覆意到遢归属照一是要有可。牯束运行的

终止条件,使匹微得。返回上层倜用的也方,否则密

易造鼠无穷循环,景后国阳府室间系足而咨掉。

Sii................................................................................................................................iX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论