JAVA程序設(shè)計(jì)課件:數(shù)組與字符串_第1頁(yè)
JAVA程序設(shè)計(jì)課件:數(shù)組與字符串_第2頁(yè)
JAVA程序設(shè)計(jì)課件:數(shù)組與字符串_第3頁(yè)
JAVA程序設(shè)計(jì)課件:數(shù)組與字符串_第4頁(yè)
JAVA程序設(shè)計(jì)課件:數(shù)組與字符串_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)組與字符串4.1項(xiàng)目任務(wù)4.2項(xiàng)目解析4.3技術(shù)準(zhǔn)備4.4項(xiàng)目學(xué)做4.5習(xí)題

單元概述

在Java語(yǔ)言中,除了基本數(shù)據(jù)類型之外,還有引用數(shù)據(jù)類型。數(shù)組與字符串就屬于引用數(shù)據(jù)類型。數(shù)組可以看成是由相同數(shù)據(jù)類型元素構(gòu)成的集合,這些元素可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。字符串在Java中是獨(dú)立的引用數(shù)據(jù)類型,也可以看成是字符數(shù)組。

引用數(shù)據(jù)類型需要用new關(guān)鍵字予以初始化。

目的與要求

·

熟悉數(shù)組的概念、分類

·

掌握一維數(shù)組的聲明、創(chuàng)建、初始化

·

掌握二維數(shù)組的聲明、創(chuàng)建、初始化

·

使用數(shù)組實(shí)現(xiàn)排序、查詢、插入和刪除算法

·

了解字符串類型String與StringBuffer的用法

重點(diǎn)與難點(diǎn)

·

數(shù)組與字符串的概念

·

數(shù)組的聲明、創(chuàng)建、初始化

·

常用算法設(shè)計(jì)

4.1項(xiàng)目任務(wù)

把一個(gè)班學(xué)生的Java程序設(shè)計(jì)課程的成績(jī)進(jìn)行統(tǒng)計(jì),然后計(jì)算出最高成績(jī)、最低成績(jī)、平均成績(jī)、及格率和及格人數(shù)。

4.2項(xiàng)目解析

對(duì)于某個(gè)同學(xué)某門功課的成績(jī)的統(tǒng)計(jì),可以用基本數(shù)據(jù)類型來(lái)實(shí)現(xiàn);對(duì)于一個(gè)班甚至一個(gè)年級(jí)的全體同學(xué)的某門功課甚至全部課程的成績(jī)的統(tǒng)計(jì)與分析,用基本數(shù)據(jù)類型來(lái)處理就很麻煩了。想想Excel表格對(duì)于大量數(shù)據(jù)的統(tǒng)計(jì)與分析方法,Java是否也有這種功能或方法呢?答案是確定的。Java語(yǔ)言提供了數(shù)組這種數(shù)據(jù)類型,用于處理大量相同數(shù)據(jù)類型的數(shù)據(jù)。將學(xué)生成績(jī)等信息存放在數(shù)組中,通過(guò)算法設(shè)計(jì)來(lái)完成學(xué)生成績(jī)的統(tǒng)計(jì)與分析。

4.3技術(shù)準(zhǔn)備

4.3.1數(shù)組的概念與分類在程序設(shè)計(jì)中,為了數(shù)據(jù)處理方便,把相同類型的若干變量順序地組織起來(lái),按其位置(下標(biāo))進(jìn)行訪問(wèn),這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。這些數(shù)據(jù)線性存放在連續(xù)的內(nèi)存地址中。

數(shù)組屬于引用(構(gòu)造)數(shù)據(jù)類型,它實(shí)際上是數(shù)組變量的簡(jiǎn)稱。一個(gè)數(shù)組可以由多個(gè)數(shù)組元素構(gòu)成,這些數(shù)組元素可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。

按數(shù)組元素的數(shù)據(jù)類型不同,數(shù)組可分為數(shù)值數(shù)組、字符數(shù)組、字符串?dāng)?shù)組等。根據(jù)數(shù)組的維數(shù),數(shù)組又可分為一維數(shù)組和多維數(shù)組。本章主要介紹一維數(shù)組、二維數(shù)組和字符串。

4.3.2一維數(shù)組

一維數(shù)組本質(zhì)上就是線性排列的同類數(shù)據(jù)構(gòu)成的集合。

1.一維數(shù)組的聲明

和基本數(shù)據(jù)類型一樣,數(shù)組變量在使用之前也要事先聲明,其聲明格式如下:

數(shù)據(jù)類型名數(shù)組名[];

數(shù)據(jù)類型名[]數(shù)組名;

數(shù)據(jù)類型可以是Java語(yǔ)言中任意的數(shù)據(jù)類型。“[]”是數(shù)組的標(biāo)志,可以放在數(shù)據(jù)類型名后面,也可以放在數(shù)組名后面,Java中習(xí)慣放在類型名后面,可以理解成某種類型的數(shù)組,名為數(shù)組名。例如:

2.一維數(shù)組的創(chuàng)建

聲明數(shù)組只是得到一個(gè)存放數(shù)組的變量,但并沒(méi)有真正地為數(shù)組分配內(nèi)存空間。只有創(chuàng)建了數(shù)組,才能為數(shù)組變量分配內(nèi)存空間,才可以真正地使用它。

創(chuàng)建數(shù)組要用到關(guān)鍵字new,其語(yǔ)法格式如下:

數(shù)組名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];

其中,數(shù)組長(zhǎng)度就是數(shù)組中可以存放的元素的個(gè)數(shù)。該語(yǔ)句為數(shù)組分配了相應(yīng)的內(nèi)存空間。如果數(shù)據(jù)類型是int,長(zhǎng)度為10,由于一個(gè)int數(shù)占用4個(gè)字節(jié)的內(nèi)存,10個(gè)int數(shù)則需要占用10?×?4

=

40個(gè)字節(jié)的內(nèi)存,而且是連續(xù)的。數(shù)組長(zhǎng)度必須是整型常量、整型變量或整型表達(dá)式。數(shù)組一旦創(chuàng)建好,其長(zhǎng)度在程序中是不能修改的,例如:

3.一維數(shù)組的引用

數(shù)組元素的引用方式為:

數(shù)組名[下標(biāo)數(shù)];

通過(guò)數(shù)組下標(biāo)(index)來(lái)引用(訪問(wèn))數(shù)組元素。在Java語(yǔ)言中,數(shù)組下標(biāo)從0開始,到數(shù)組長(zhǎng)度減1結(jié)束。這個(gè)也好理解,如果最后一個(gè)元素是“數(shù)組名[數(shù)組長(zhǎng)度]”,這就與數(shù)組聲明相混淆了。

每個(gè)數(shù)組都有一個(gè)公有屬性length來(lái)指明它的長(zhǎng)度,它是只讀的、不可改變的。例如:score.length指明數(shù)組score的長(zhǎng)度。

4.一維數(shù)組的初始化

給數(shù)組元素分配內(nèi)存之后,為數(shù)組元素賦初值的過(guò)程稱為數(shù)組初始化。初始化可分為靜態(tài)初始化和動(dòng)態(tài)初始化。

1)靜態(tài)初始化

當(dāng)數(shù)組元素的初始化值直接由括在大括號(hào)“{}”之間的數(shù)據(jù)給出時(shí),就稱為靜態(tài)初始化,也稱為數(shù)組元素的整體賦值(初始化)。該方法適用于數(shù)組的元素不多且初始元素確定的情況。靜態(tài)初始化往往和聲明結(jié)合在一起使用,其格式如下:

數(shù)據(jù)類型名[]數(shù)組名={元素1[,元素2…]};

其中,元素1、元素2等是用與數(shù)據(jù)類型名相同類型的數(shù)據(jù)為數(shù)組元素賦初值;大括號(hào)中的方括號(hào)“[]”表示可選項(xiàng),例如:

表示聲明了一個(gè)一維整型數(shù)組score,并用98、75、66、31、84為它的第一、二、三、四、五號(hào)元素初始化,而且該數(shù)組的長(zhǎng)度就是5。

靜態(tài)初始化不需要?jiǎng)?chuàng)建數(shù)組,即不用new操作符,直接用大括號(hào)為數(shù)組整體初始化,數(shù)組的長(zhǎng)度就是大括號(hào)中數(shù)據(jù)的個(gè)數(shù)。下面的初始化是錯(cuò)誤的:

數(shù)組的靜態(tài)初始化必須在聲明的同時(shí)進(jìn)行,而不能先聲明再進(jìn)行靜態(tài)初始化。

2)動(dòng)態(tài)初始化

與靜態(tài)初始化不同,動(dòng)態(tài)初始化先用new操作符為數(shù)組分配內(nèi)存,然后才為每一個(gè)元素賦初值。其一般格式如下:

數(shù)組名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];

其中,數(shù)組名是已定義的數(shù)組名;數(shù)據(jù)類型為數(shù)組元素的數(shù)據(jù)類型,必須與定義時(shí)給出的數(shù)據(jù)類型保持一致;數(shù)組長(zhǎng)度為數(shù)組元素的多少,它可為整型表達(dá)式或整型常量。

由于數(shù)組長(zhǎng)度確定,下標(biāo)連續(xù),因此通常用for循環(huán)為數(shù)組動(dòng)態(tài)初始化。如從控制臺(tái)通過(guò)鍵盤為“intscore=newint[5];”創(chuàng)建的數(shù)組初始化的代碼如下:

5.一維數(shù)組的應(yīng)用

例4-1

把1~5這5個(gè)數(shù)正序輸入,反序輸出。

分析:這5個(gè)相同類型的整型數(shù)據(jù)可以通過(guò)一個(gè)int數(shù)組來(lái)保存。

例4-2

用數(shù)組重寫Fibonacci(斐波那契)序列程序。

Fibonacci序列的遞歸算法表示為:F1

=

F2

=

1,F(xiàn)n

=

Fn-1

+

Fn-2。把這n個(gè)有序整數(shù)存放在一個(gè)長(zhǎng)度為n的int數(shù)組中。以Fibonacci序列的前10個(gè)數(shù)為例,程序清單如下:

4.3.3二維數(shù)組

我們?cè)谟懻撘痪S數(shù)組的時(shí)候談到,數(shù)組的元素類型可以為數(shù)組,即數(shù)組的嵌套。其實(shí),多維數(shù)組可以看作是數(shù)組的數(shù)組。也就是說(shuō),多維數(shù)組中每個(gè)元素為一個(gè)低一維的數(shù)組。由于多維數(shù)組中用得較多的還是二維數(shù)組,因而本節(jié)著重討論二維數(shù)組的屬性,其他高維數(shù)組可以以此類推。

1.二維數(shù)組的聲明、創(chuàng)建與初始化

二維數(shù)組的聲明、創(chuàng)建和初始化過(guò)程基本與一維數(shù)組的類似。

1)二維數(shù)組的聲明

與一維數(shù)組類似,二維數(shù)組聲明的一般格式如下:

數(shù)據(jù)類型數(shù)組名[][];

數(shù)據(jù)類型[][] 數(shù)組名;

其中,數(shù)據(jù)類型為數(shù)組元素的數(shù)據(jù)類型,它可以是任何的數(shù)據(jù)類型;數(shù)組名是Java中合法的標(biāo)識(shí)符。上面的定義并沒(méi)有為數(shù)組元素分配內(nèi)存空間,因而必須經(jīng)過(guò)初始化后才能使用。二維數(shù)組由兩對(duì)[]標(biāo)識(shí),例如:

2)二維數(shù)組的創(chuàng)建

創(chuàng)建二維數(shù)組,直接為每一維分配內(nèi)存空間,格式如下:

數(shù)組名=new數(shù)據(jù)類型[維1大小][維2大小];

例如:

3)二維數(shù)組的初始化

二維數(shù)組的初始化是按照行優(yōu)先的規(guī)則,先行后列進(jìn)行初始化。二維數(shù)組的初始化也分為靜態(tài)初始化和動(dòng)態(tài)初始化兩種。

(1)靜態(tài)初始化。

二維數(shù)組實(shí)際上可以看成是一張二維數(shù)表,相當(dāng)于元素都是一維數(shù)組的一維數(shù)組,例如:

(2)動(dòng)態(tài)初始化。

常用for循環(huán)嵌套為二維數(shù)組動(dòng)態(tài)初始化。

值得注意的是:數(shù)組與基本數(shù)據(jù)類型在對(duì)數(shù)據(jù)初始化的處理上有所不同,基本數(shù)據(jù)類型必須進(jìn)行初始化后才能使用,否則使用時(shí)會(huì)有變量“尚未初始化”的錯(cuò)誤提示信息;而數(shù)組如果沒(méi)有初始化,系統(tǒng)會(huì)自動(dòng)為它提供初始化值。如int類型的數(shù)組,元素默認(rèn)值是0;double類型的數(shù)據(jù),元素默認(rèn)值是0.0;char類型的數(shù)組,元素默認(rèn)值是'\0'(空字符);引用數(shù)據(jù)類型的數(shù)組,元素默認(rèn)值是null。

4)二維數(shù)組的引用

當(dāng)對(duì)二維數(shù)組進(jìn)行了初始化后,就可以在程序中引用數(shù)組的元素了。二維數(shù)組元素的引用是通過(guò)數(shù)組名和下標(biāo)值來(lái)進(jìn)行的,其一般格式如下:

數(shù)組名[下標(biāo)1][下標(biāo)2];

其中,下標(biāo)1為數(shù)組元素的行下標(biāo);下標(biāo)2為數(shù)組元素的列下標(biāo)。二維數(shù)組中,下標(biāo)同樣是一個(gè)int類型數(shù)。Java語(yǔ)言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不是連續(xù)分配的,所以不要求二維數(shù)組每一維的大小都相同。

2.二維數(shù)組的應(yīng)用舉例

例4-3

求方陣轉(zhuǎn)置的程序設(shè)計(jì)。

分析:在數(shù)學(xué)中,矩陣(Matrix)是一個(gè)按照長(zhǎng)方形陣列排列的復(fù)數(shù)或?qū)崝?shù)集合,是一個(gè)二維數(shù)表。當(dāng)行數(shù)和列數(shù)相等時(shí),稱為方陣,如:

稱為三階方陣。矩陣的轉(zhuǎn)置就是把矩陣的行和列對(duì)調(diào)后所得到的新矩陣,如上述方陣的轉(zhuǎn)置矩陣是:

由于矩陣是一個(gè)二維數(shù)表,所以可以用二維數(shù)組來(lái)表示。矩陣數(shù)據(jù)的輸入和輸出都可以由循環(huán)嵌套來(lái)實(shí)現(xiàn)。程序清單如下:

程序執(zhí)行結(jié)果如下所示。

原矩陣是:

4.3.4常用算法設(shè)計(jì)

1.排序

在眾多的排序算法中,冒泡排序法是非常重要的一個(gè)。冒泡排序法就是將數(shù)組中的第一個(gè)數(shù)與后面的所有數(shù)依次進(jìn)行比較,如果array[i]>array[i+1]就交換,這樣一輪循環(huán)下來(lái)將最小的數(shù)放在最前面,即冒出一個(gè)泡。之后對(duì)剩下的n-1個(gè)數(shù)用同樣的方法進(jìn)行交換。冒泡排序法可以用循環(huán)嵌套來(lái)實(shí)現(xiàn),如例4-4中程序所描述的那樣。當(dāng)然,也可以每次冒出的是最大的,即若array[i]<array[i+1]就交換。

例4-4

將數(shù)組元素{30,1,-9,70}從小到大排序。

程序清單如下:

2.查找

查找算法在數(shù)據(jù)庫(kù)程序設(shè)計(jì)中應(yīng)用非常廣泛。最簡(jiǎn)單的查找就是順序查找,順序查找又叫線性查找。它是把待查數(shù)與數(shù)據(jù)表中的數(shù)依次進(jìn)行比較,如果相等,就記住這個(gè)位置并輸出;如果直到結(jié)束都沒(méi)有相等的,就輸出相應(yīng)的未找到信息。

例4-5

有一個(gè)數(shù)組{12,23,34,45,-1,89},待查找的數(shù)是45,請(qǐng)用順序查找算法查找45在數(shù)組中所在的位置。程序清單如下:

3.插入

插入算法要求在一個(gè)已經(jīng)排序好的數(shù)組中的適當(dāng)位置插入一個(gè)新的數(shù)據(jù),插入后還是有序的。假設(shè)數(shù)組由小到大已經(jīng)排列好,沿用順序查找算法的思路,順序地將待插入的數(shù)與數(shù)組中的各數(shù)進(jìn)行比較,當(dāng)出現(xiàn)待插入的數(shù)小于數(shù)組中的數(shù)時(shí),就在這個(gè)位置插入該數(shù)。插入的數(shù)占用了數(shù)組中原來(lái)數(shù)的位置,因此要將之后的數(shù)依次后移,以留出待插入數(shù)的位置。

由于數(shù)組一旦創(chuàng)建,大小就不能改變,所以在使用插入算法時(shí),定義的數(shù)組長(zhǎng)度應(yīng)為插入后數(shù)組的長(zhǎng)度。

例4-6

有一個(gè)有序數(shù)組“int[]arr={3,8,10,15,21,33,0};”,現(xiàn)在要插入一個(gè)12的數(shù)據(jù),要求插入后還是有序的。

說(shuō)明:可以看到,程序中創(chuàng)建的數(shù)組與原始數(shù)組并不是完全相同,最后多了一個(gè)元數(shù)0。這就是給要插入的數(shù)預(yù)留的空位。由于整體靜態(tài)初始化已經(jīng)確定了數(shù)組的長(zhǎng)度,而數(shù)組長(zhǎng)度是不能改變的,所以在最后加一個(gè)0(也可以是其他任意整數(shù)),作為預(yù)留的空位。

如果用動(dòng)態(tài)初始化給數(shù)組賦值,那么在創(chuàng)建時(shí)就將數(shù)組的長(zhǎng)度人為地加1,這樣就不需要給最后添加元素值了。

程序執(zhí)行結(jié)果如下:

也可以先找到待插入數(shù)的位置,如j,用for循環(huán)騰出空位,再將待插入數(shù)放入空位,如“arr[j]=input;”。讀者自己完成。

4.刪除

刪除并不要求原始數(shù)組是排序好的,只要將待刪除的數(shù)與數(shù)組的元素依次進(jìn)行比較,相等時(shí)就刪除,刪除之后,后邊的元素依次向前補(bǔ)位即可。由于刪除以后長(zhǎng)度減少1,最后一個(gè)元素可能重復(fù)或?yàn)榭?,輸出時(shí)控制在長(zhǎng)度-1個(gè)元素就可以了。

例4-7

有一個(gè)有序數(shù)據(jù)“int[]arr={3,8,10,15,21,33,12};”,現(xiàn)在要?jiǎng)h除一個(gè)數(shù)據(jù),并輸出刪除后的結(jié)果數(shù)組。

說(shuō)明:如果待刪除的數(shù)不在數(shù)組中,應(yīng)提示沒(méi)有找到要?jiǎng)h除的數(shù)。

增刪改查在數(shù)據(jù)庫(kù)操作中非常重要,由于到此尚未學(xué)習(xí)函數(shù)(方法)的概念,所以就用具體的例子來(lái)講解。讀者在學(xué)習(xí)了類和對(duì)象之后,就可以編寫相應(yīng)的方法了。

4.3.5字符串

一個(gè)字符串就相當(dāng)于一個(gè)一維的字符數(shù)組。字符串是Java語(yǔ)言中另一種引用型的數(shù)據(jù)類型。

1.String類

String類是字符串常量類,該類對(duì)象在建立后不能修改。Java編譯器保證每個(gè)字符串常量都是String類對(duì)象。用雙引號(hào)括起來(lái)的一串字符即為字符串常量,比如“WelcometoJavaWorld!”,在通過(guò)編譯器編譯后成為String對(duì)象(注:對(duì)象之于類,正如變量之于基本數(shù)據(jù)類型一樣,詳見第5章)。

實(shí)例化一個(gè)String類對(duì)象,即是初始化一個(gè)String類常量,可以使用字符串常量初始化,也可以通過(guò)系統(tǒng)提供的構(gòu)造方法初始化。

構(gòu)造方法是Java語(yǔ)言中類專為初始化對(duì)象提供的方法。構(gòu)造方法必須與new一起使用。想想前面我們用過(guò)的Scanner類,現(xiàn)在就比較容易理解了。

1)?String類初始化

String類可用字符串常量對(duì)其初始化,也可調(diào)用其構(gòu)造方法來(lái)進(jìn)行,例如:

Stringstr=“WelcometoJavaWrold!”;

String類常用的構(gòu)造方法見表4-1。

例如:

2)字符串類String的訪問(wèn)

字符串的訪問(wèn)即字符串的引用,Java語(yǔ)言中String類的功能很強(qiáng),它提供了幾乎覆蓋所有的字符串運(yùn)算操作的方法。表4-2給出了一些常用的字符串運(yùn)算方法。

字符串引用的格式是:

字符串對(duì)象.方法名(或?qū)傩悦?;

其中,“.”相當(dāng)于漢語(yǔ)中的“的”,上述語(yǔ)句表示引用指定字符串對(duì)象的方法或?qū)傩?,例如?/p>

2.StringBuffer類

String類是字符串常量類,初始化后就不能進(jìn)行修改了,而StringBuffer類是字符串緩沖區(qū),可以簡(jiǎn)單地理解為是字符串變量,不僅可以接受修改,還可以將其內(nèi)容整個(gè)讀入文件。在Java中,StringBuffer類使用起來(lái)比String類更加靈活、方便。

1)

StringBuffer類的初始化

StringBuffer類只能用構(gòu)造方法對(duì)其初始化,如果想用語(yǔ)句“StringBuffers="WelcometoJavaWorld!";”對(duì)其初始化,則系統(tǒng)會(huì)給出出錯(cuò)信息。StringBuffer常用的構(gòu)造方法如表4-3所示。

2)?StringBuffer類的訪問(wèn)方法

StringBuffer類的訪問(wèn)方法主要就是添加字符和插入字符,如表4-4所示。

Java雖然不支持運(yùn)算符的重載,但“+”是個(gè)例外,它可以用來(lái)實(shí)現(xiàn)字符串的連接,在println()方法中已經(jīng)大量使用過(guò)。例如:

對(duì)于StringBuffer類,編譯器首先生成類StringBuffer的一個(gè)實(shí)例,然后連續(xù)調(diào)用append()方法給字符串添加內(nèi)容。最后,再調(diào)用toString()方法把StringBuffer對(duì)象轉(zhuǎn)換為String對(duì)象。上例相當(dāng)于執(zhí)行下列語(yǔ)句:

3.字符串的比較

String類提供的equals()和equalsIgnoreCase()方法可以用來(lái)對(duì)兩個(gè)字符串進(jìn)行比較。

equals()方法用于比較兩個(gè)字符串中的內(nèi)容是否相同,如果相同,返回true;否則返回false。使用格式是:

例如

這個(gè)程序段運(yùn)行的結(jié)果是b的值為true。

equalsIgnoreCase()與equals()基本相同,只是前者忽略大小寫。

這兩個(gè)方法與運(yùn)算符“==”實(shí)現(xiàn)的比較是不同的。運(yùn)算符“==”比較兩個(gè)對(duì)象是否引用同一個(gè)實(shí)例,而equals()和equalsIgnoreCase()則比較兩個(gè)字符串中對(duì)應(yīng)的每個(gè)字符值是否相同,如:

4.4項(xiàng)目學(xué)做

一個(gè)學(xué)生的成績(jī),用幾個(gè)變量就可以解決,但對(duì)于一個(gè)班、一個(gè)專業(yè)、一個(gè)年級(jí)的學(xué)生成績(jī),用簡(jiǎn)單變量處理顯然是不可取的。對(duì)于成績(jī)信息,其數(shù)據(jù)類型是相同的,因此用數(shù)組是非常合適的。下面代碼中只給出了求出最高成績(jī)及對(duì)應(yīng)的學(xué)生姓名,其他的任務(wù)讀者自己完成。

參考代碼如下:

學(xué)生成績(jī)管理至少應(yīng)該有成績(jī)的增刪改查功能。前面在講算法時(shí),用具體的數(shù)據(jù)簡(jiǎn)單介紹了增刪改查算法的實(shí)現(xiàn)。在Java程序設(shè)計(jì)中,使用方法(函數(shù),詳見第5章)來(lái)統(tǒng)一處理數(shù)據(jù)的增刪改查,在主方法里只需要調(diào)用這些方法,就可以很容易地實(shí)現(xiàn)對(duì)成績(jī)的管理,這也使得程序設(shè)計(jì)更具有模塊化。

下面的代碼中,首先創(chuàng)建一個(gè)數(shù)組模型類ArrayModel,這個(gè)類中包括了數(shù)組的定義、數(shù)組內(nèi)容的顯示、對(duì)數(shù)組數(shù)據(jù)的增刪改查操作。對(duì)于成績(jī)管理,大家還可以添加排序、最大值、最小值、總和(總成績(jī))、平均值、及格率等功能。先創(chuàng)建主類,在主方法里創(chuàng)建ArrayModel對(duì)象,然后調(diào)用ArrayModel的方法實(shí)現(xiàn)對(duì)數(shù)組元素的管理。

本程序中涉及的類定義、成員變量定義、構(gòu)造方法、訪問(wèn)器、方法定義在第5章將詳細(xì)講解。到時(shí)候讀者可以重新研讀這個(gè)程序。

4.5習(xí)題

1.填空題(1)

M是一個(gè)二維數(shù)組,有4行8列整型元素,正確的定義語(yǔ)句是

。(2)整型數(shù)組“inta[][]

=newint[3][4]”共有

個(gè)元素,行下標(biāo)的下限值是

,列下標(biāo)的上限值是

。(3)

Java中數(shù)組下標(biāo)的數(shù)據(jù)類型是

類型。

(4)數(shù)組的元素通過(guò)

來(lái)訪問(wèn),數(shù)組Array的長(zhǎng)度為

(5)浮點(diǎn)型數(shù)組的默認(rèn)值是

。

(6)下面語(yǔ)句顯示輸出8行8列浮點(diǎn)型數(shù)組h主對(duì)角線上的所有元素,請(qǐng)補(bǔ)充完整。

for(

;

;i++)print(

);

(7)以下程序片段運(yùn)行的結(jié)果是

。

……

inti,n[]={0,0,0,0,0};

for(i=1;i<=4;i++)

{

n[i]=n[i-1]*2+1;

System.out.print(""+n[i]);

}

……

(8)下列程序的功能是

publicclassEg8{

publicstaticvoidmain(String[]srgs){

inti,j,t,a[]={11,5,32,7,2};

for(i=0;i<5;i++)

{

for(j=i;j<5;j++)

{

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

for(i=0;i<5;i++)

System.out.print(""+a[i]);

}

}

(9)下列程序的功能是

。

publicclassEg9{

publicstaticvoidmain(String[]srgs){

inti,a[]={12,23,34,45,56,67,78,89,90,91};

for(i=4;i<a.length;i++)

a[i]=a[i+1];

for(i=0;i<a.length-1;i++)

System.out.print(""+a[i]);

}

}

2.選擇題

(1)下面正確的初始化語(yǔ)句是()。

A.?charstr[]=“hello”; B.?charstr[100]=“hello”;

C.?charstr[]={'h','e','l','l','o'};

D.?charstr[]={'hello'};

(2)定義了一維int型數(shù)組a[10]后,下面錯(cuò)誤的引用是()。

A.?a[0]=1; B.?a[10]=2;

C.?a[0]=5*2; D.?a[1]=a[2]*a[0];

(3)對(duì)以下語(yǔ)句理解正確的是()。

inta[]={6,7,8,9,10};

A.將5個(gè)初值依次賦給a[1]至a[5]

B.將5個(gè)初值依次賦給a[0]至a[4]

C.將5個(gè)初值依次賦給a[6]至a[10]

D.數(shù)組長(zhǎng)度與初值個(gè)數(shù)不等,語(yǔ)句不正確

(4)下面的二維數(shù)組初始化語(yǔ)句中,正確的是()。

A.?floatb[2][2]={0.1,0.2,0.3,0.4};

B.?inta[][]={{1,2},{3,4}};

C.?inta[2][]={{1,2},{3,4}};

D.?floata[2][2]={0};

(5)定義了int型二維數(shù)組a[6][7]后,數(shù)組元素a[3][4]之前的數(shù)組元素個(gè)數(shù)為()。

A.?24 B.?25 C.?18 D.?17

(6)下面程序的運(yùn)行結(jié)果是()。

main(){

inta[][]={{1,2,3},{4,5,6}};

System.out.println(a[1][1]+“”);

}

A.?3 B.?4 C.?5 D.?6

(7)下列是字符串常量的是(

)。

A.?‘HolleWorld’ B.?“15” C.?VC D.?‘m’

(8)下面程序的運(yùn)行結(jié)果是()。

main(){

intx=30;

int[]numbers=newint[x];

x=60;

S

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論