面向?qū)ο蟪绦蛟O(shè)計(jì)第8講 數(shù)組(下)_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)第8講 數(shù)組(下)_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)第8講 數(shù)組(下)_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)第8講 數(shù)組(下)_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)第8講 數(shù)組(下)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第8講數(shù)組(下)字符數(shù)組數(shù)組實(shí)例多維數(shù)組ArrayList類對象數(shù)組數(shù)組的聲明和創(chuàng)建數(shù)組的賦值和引用數(shù)組的應(yīng)用數(shù)組排序掌握二維數(shù)組的創(chuàng)建方法了解ArrayList類和對象數(shù)組上講內(nèi)容回顧理解字符數(shù)組的概念了解使用字符數(shù)組的步驟:聲明數(shù)組引用變量、創(chuàng)建數(shù)組、初始化數(shù)組和處理數(shù)組掌握字符數(shù)組的應(yīng)用教學(xué)目標(biāo)字符數(shù)組字符數(shù)組中的每個元素都是字符類型的數(shù)據(jù),它的創(chuàng)建方法與一般的數(shù)組相似。創(chuàng)建如: charstr1[]=newchar[10];語句聲明并創(chuàng)建了字符數(shù)組str1,該數(shù)組中可以存儲10個字符。字符數(shù)組可以初始化。例如:

charstr2={'a','b','c','d','e'};其中,str2是一個字符數(shù)組,共有5個元素,str2[0]為'a',str2[1]為'b',str2[2]為'c',str2[3]為'd',str2[4]為'e'。

字符數(shù)組賦值字符數(shù)組的元素可以被賦值。例如,s2[1]='d';下面通過for循環(huán)語句給一個字符數(shù)組賦值。

charstr[]=newchar[100];

for(inti=0;i<26;i++)

str[i]='A'+i;經(jīng)過上述循環(huán)后,數(shù)組str中將存儲26個大寫字母。字符串與字符數(shù)組字符串不是字符數(shù)組,但是可以轉(zhuǎn)換為字符數(shù)組,反之亦然。字符串和字符數(shù)組之間的轉(zhuǎn)換有以下幾種形式:

1.使用toCharArray方法將字符串轉(zhuǎn)換為字符數(shù)組。例如:

char[]charArray="word".toCharArray();則charArray[0]是'w',charArray[1]是'o',charArray[2]是'r',charArray[3]是'd'。

字符串與字符數(shù)組

2.使用String(char[])構(gòu)造方法或valueOf(char[])方法,將字符數(shù)組轉(zhuǎn)換為字符串。例如,下面語句使用String構(gòu)造方法從數(shù)組構(gòu)造了一個字符串。

Stringstr=newString(new

char[]{‘w’,’o’,’r’,’d’});下面語句使用valueOf方法從數(shù)組構(gòu)造了一個字符串。

Stringstr=String.valueOf(new

char[]{‘w’,’o’,’r’,’d’});從鍵盤輸入一個字符串,請判斷該字符串是否是回文回文是指該字符串順序和逆序是一樣的,例如mom是回文。本程序提示用戶從鍵盤輸入一個字符串,用while循環(huán)來比較字符并且確定字符串是否是回文。使用循環(huán)檢查字符串的第一個字符是否和最后一個字符一樣。如果是,檢查第二個字符是否和倒數(shù)第二個字符一樣。這個過程持續(xù)到檢查出不相同的字符或字符串中的所有字符都已檢查完,若字符串中含有奇數(shù)個字符,則不檢查中間的字符?;匚某绦騪ublicstaticboolean

comp(Strings){

inti=0;char[]charArray=s.toCharArray();

while(i<s.length()/2){

if(charArray[i]!=charArray[s.length()-1-i]) returnfalse; i++; } returntrue;}實(shí)例1例5.10定義一個double型數(shù)組,輸入數(shù)組的所有元素,求出數(shù)組元素的最大值和最小值并輸出。分析:只需要定義一維數(shù)組,設(shè)置兩個變量,分別存放最大值和最小值,然后與數(shù)組中各個元素比較,找出最大值和最小值。實(shí)例1(續(xù))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(“數(shù)組元素的最大值:\t"+max);

System.out.println("數(shù)組元素的最小值:\t"+min);}}將數(shù)組的第一個元素作為初始最大值和最小值,存放在變量max和min中,即max=x[0],min=x[0]。數(shù)組中其余的元素逐個與max、min比較,若大于max則將該元素值賦予max,若小于min則賦予min。實(shí)例2整型數(shù)據(jù)交換參數(shù)傳遞方法:基本數(shù)據(jù)類型:值傳遞,改變方法內(nèi)形參的值不會影響實(shí)參的值;引用數(shù)據(jù)類型:引用(地址)傳遞,改變方法內(nèi)形參的值會影響實(shí)參的值。publicstaticvoidswap1(intn1,intn2){

intt=n1; n1=n2; n2=t; }publicstaticvoidswap2(int[]num){

intt=num[0]; num[0]=num[1]; num[1]=t; }實(shí)例2(續(xù))整型數(shù)據(jù)交換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]);} }二維數(shù)組

聲明二維數(shù)組的格式有如下兩種:數(shù)據(jù)類型[][]數(shù)組名;數(shù)據(jù)類型數(shù)組名[][];創(chuàng)建二維數(shù)組的方法,使用關(guān)鍵字new。格式如下:數(shù)組名=new數(shù)據(jù)類型[行長度][列長度];可以使用一個簡化的方式來聲明、創(chuàng)建和初始化二維數(shù)組。如,int[][]array={{1,2,3},{4,5,6},{7,8,9},{11,12,13}};二維數(shù)組示例定義一個整型的二維數(shù)組,分行輸出每行數(shù)組元素并求所有元素之和。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中數(shù)組的大小在創(chuàng)建數(shù)組時給出,一旦給出數(shù)組大小,就不可能再改變。有時程序中要用到大小不確定的數(shù)組,這時可以用兩種方法解決:一是定義盡可能大的數(shù)組;二是使用java.util包中的ArrayList類,這個類實(shí)現(xiàn)了與數(shù)組類似的數(shù)據(jù)結(jié)構(gòu),還可以根據(jù)程序的需要自動改變大小。它的使用與數(shù)組有一些區(qū)別。下面的語句創(chuàng)建了一個ArrayList對象mlist,

ArrayList

mlist=newArrayList();類ArrayList的對象mlist中可以存放基本數(shù)據(jù)類型、對象等元素。ArrayList類的幾個方法add()、get()和size()。add()方法用來向mlist中增加元素,其參數(shù)可以是基本數(shù)據(jù)類型、對象。get()方法用來得到mlist的各個元素,其參數(shù)為整型數(shù)據(jù)。例如,mlist.get(0)得到mlist的第一個元素。size()方法用來獲得mlist的大小,使用mlist.size(),沒有參數(shù)。把0~10的階乘值用大整數(shù)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類的應(yīng)用示例(續(xù))程序中factorial(intx)是一自定義的靜態(tài)方法,該方法有一個整型參數(shù),返回值類型為ArrayList類對象。方法的功能是求0到x中所有整數(shù)的階乘值,將結(jié)果存放到ArrayList類對象中并返回結(jié)果。大整數(shù)不是基本數(shù)據(jù)類型,它們的乘法不能用運(yùn)算符*,而要使用大整數(shù)類的multiply()方法求乘積。multiply(BigInteger

val)

ReturnsaBigIntegerwhosevalueis(this*val).valueOf(long

val)

ReturnsaBigIntegerwhosevalueisequaltothatofthespecifiedlong.對象數(shù)組數(shù)組類型為對象的數(shù)組稱為對象數(shù)組。用new為該數(shù)組分配內(nèi)存:Peopleobj[]=newPeople[2];然后用new為每一個作為數(shù)組元素的對象分配內(nèi)存:obj[0]=newPeople();可以按以下方法使用:obj[0].name=“張三”;對象數(shù)組和基本數(shù)據(jù)類型的數(shù)組一樣,可以作為方法的參數(shù)或方法的返回值。在main()方法中,就是一個String類的對象數(shù)組作為方法參數(shù)。注意:對象數(shù)組聲明后,不能立刻存放數(shù)據(jù)。因?yàn)閷ο髷?shù)組的聲明只會產(chǎn)生對象的引用,并沒有產(chǎn)生對象的實(shí)例。實(shí)例:選擇排序算法思想:假定對一組無序數(shù)進(jìn)行升序排序。選擇排序就是每次尋找這一序列中最大的數(shù),并將其與序列的最后面數(shù)交換位置,然后尋找未排序序列中的最大數(shù)與最后面數(shù)交換位置,依次類推直到全部排序完成。選擇排序?qū)?shù)列:2843715,用選擇法排序。選擇8(最大的數(shù)字)并與5(數(shù)列中最后一個數(shù)字)交換:2543718在未排序數(shù)列中找出最大數(shù)7,將7和1的位置交換,新的數(shù)列:2543178繼續(xù)相同的過程,最后整個數(shù)列將是從小到大的排序: 123457828437152jkimax請把數(shù)列『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; }}}選擇排序(續(xù))

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論