Java 基礎(chǔ) 12 數(shù)組常見問題及練習(xí)

1.1.1 數(shù)組的元素訪問

1.1.1.1案例代碼

package com.itheima_01;
/*
 * 數(shù)組:存儲(chǔ)同一種數(shù)據(jù)類型的多個(gè)元素的容器怔蚌。
 * 
 * 定義格式:
 *      A:數(shù)據(jù)類型[] 數(shù)組名;
 *      B:數(shù)據(jù)類型 數(shù)組名[];
 * 舉例:
 *      A:int[] a; 定義一個(gè)int類型的數(shù)組蔗坯,數(shù)組名是a
 *      B:int a[]; 定義一個(gè)int類型的變量束昵,變量名是a數(shù)組
 * 
 * 數(shù)組初始化:
 *      A:所謂初始化杏瞻,就是為數(shù)組開辟內(nèi)存空間,并為數(shù)組中的每個(gè)元素賦予初始值
 *      B:我們有兩種方式對(duì)數(shù)組進(jìn)行初始化
 *          a:動(dòng)態(tài)初始化 只指定長(zhǎng)度黄橘,由系統(tǒng)給出初始化值
 *          b:靜態(tài)初始化 給出初始化值碱鳞,由系統(tǒng)決定長(zhǎng)度
 * 
 * 動(dòng)態(tài)初始化:
 *      數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
        int[] arr = new int[3];
        /*
         * 左邊:
         *      int:說明數(shù)組中的元素的數(shù)據(jù)類型是int類型
         *      []:說明這是一個(gè)數(shù)組
         *      arr:是數(shù)組的名稱
         * 右邊:
         *      new:為數(shù)組分配內(nèi)存空間
         *      int:說明數(shù)組中的元素的數(shù)據(jù)類型是int類型
         *      []:說明這是一個(gè)數(shù)組
         *      3:數(shù)組的長(zhǎng)度勃黍,其實(shí)就是數(shù)組中的元素個(gè)數(shù)
         */`
        
        System.out.println(arr); //[I@3fa5ac,地址值
        //我們獲取到地址值沒有意義,我要的是數(shù)組中的數(shù)據(jù)值娜氏,該怎么辦呢?
        //不用擔(dān)心拳缠,java已經(jīng)幫你想好了
        //其實(shí)數(shù)組中的每個(gè)元素都是有編號(hào)的,編號(hào)是從0開始的牍白,最大的編號(hào)就是數(shù)組的長(zhǎng)度-1
        //用數(shù)組名和編號(hào)的配合我們就可以獲取數(shù)組中的指定編號(hào)的元素
        //這個(gè)編號(hào)的專業(yè)叫法:索引
        //格式:數(shù)組名[編號(hào)] -- 數(shù)組名[索引]
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

1.1.2 數(shù)組操作的兩個(gè)常見小問題

1.1.2.1 案例代碼

package com.itheima_04;
/*
 * 兩個(gè)常見小問題:
 *      ArrayIndexOutOfBoundsException:數(shù)組索引越界異常
 *          如何產(chǎn)生的呢?我們?cè)L問了不存在的索引脊凰。
 * 
 *      NullPointerException:空指針異常
 *          如何產(chǎn)生的呢?null是指不再指向堆內(nèi)存的數(shù)據(jù),而我們還在訪問堆內(nèi)存的數(shù)據(jù)
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定義數(shù)組
        int[] arr = {1,2,3};
        
        //訪問數(shù)組中的元素
        //System.out.println(arr[3]);
        
        //引用數(shù)據(jù)類型:類,接口狸涌,數(shù)組
        //常量:null切省,它是可以賦值給引用數(shù)據(jù)類型的,表示該引用不再指向堆內(nèi)存的數(shù)據(jù)
        arr = null;
        System.out.println(arr[1]);
    }
}

1.1.3 數(shù)組操作之遍歷數(shù)組

1.1.3.1案例代碼

package com.itheima;
/*
 * 需求:數(shù)組遍歷(依次輸出數(shù)組中的每一個(gè)元素)
 */
public class ArrayOperatorDemo {
    public static void main(String[] args) {
        //定義一個(gè)數(shù)組
        int[] arr = {11,22,33,44,55};
        
        //原始做法
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
        System.out.println("------------------");
        
        //用循環(huán)改進(jìn)代碼
        //用for循環(huán)獲取到數(shù)據(jù)0-4
        for(int x=0; x<5; x++) {
            System.out.println(arr[x]);
        }
        System.out.println("------------------");
        
        //為了解決我們?nèi)?shù)數(shù)組中的元素個(gè)數(shù)問題帕胆,數(shù)組就提供了一個(gè)屬性:length
        //用于獲取數(shù)組中的元素個(gè)數(shù)
        //使用格式:數(shù)組名.length
        System.out.println("arr數(shù)組共有"+arr.length+"個(gè)元素");
        System.out.println("------------------");
        
        //數(shù)組遍歷的標(biāo)準(zhǔn)版代碼
        for(int x=0; x<arr.length; x++) {
            System.out.println(arr[x]);
        }
        
    }
}

1.1.4 數(shù)組操作之獲取最值

Array_Max.png

1.1.4.1案例代碼

package com.itheima_03;
/*
 * 需求:數(shù)組獲取最值(獲取數(shù)組中的最大值最小值)
 */
public class ArrayTest2 {
    public static void main(String[] args) {
        //定義數(shù)組
        int[] arr = {12,98,45,73,60};
        
        //定義參照物
        int max = arr[0];
        
        //遍歷數(shù)組朝捆,獲取除了0以外的所有元素,進(jìn)行比較
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        System.out.println("數(shù)組中的最大值是:"+max);
    }
}

1.1.5數(shù)組練習(xí)之評(píng)委打分

1.1.5.1案例代碼

package com.itheima;

import java.util.Scanner;

/*
 * 需求:在編程競(jìng)賽中懒豹,有6個(gè)評(píng)委為參賽的選手打分芙盘,分?jǐn)?shù)為0-100的整數(shù)分。
 * 選手的最后得分為:去掉一個(gè)最高分和一個(gè)最低分后 的4個(gè)評(píng)委平均值脸秽。
 * 請(qǐng)寫代碼實(shí)現(xiàn)儒老。(不考慮小數(shù)部分)
 * 
 * 分析:
 *      A:定義一個(gè)長(zhǎng)度為6的數(shù)組
 *      B:評(píng)委打分的數(shù)據(jù)采用鍵盤錄入實(shí)現(xiàn)
 *      C:寫代碼獲取數(shù)組的最大值(最高分)
 *      D:寫代碼獲取數(shù)組的最小值(最低分)
 *      E:寫代碼求數(shù)組中的元素和(總分)
 *      F:平均分:(總分-最高分-最低分)/(arr.length-2)
 *      G:輸出平均分即可
 */
public class ArrayTest {
    public static void main(String[] args) {
        //定義一個(gè)長(zhǎng)度為6的數(shù)組
        int[] arr = new int[6];
        
        //評(píng)委打分的數(shù)據(jù)采用鍵盤錄入實(shí)現(xiàn)
        Scanner sc = new Scanner(System.in);
        
        for(int x=0; x<arr.length; x++) {
            System.out.println("請(qǐng)輸入第"+(x+1)+"個(gè)評(píng)委給出的分?jǐn)?shù):");
            int score = sc.nextInt();
            arr[x] = score;
        }
        
        //寫代碼獲取數(shù)組的最大值(最高分)
        int max = arr[0];
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        
        //寫代碼獲取數(shù)組的最小值(最低分)
        int min = arr[0];
        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }
        
        //寫代碼求數(shù)組中的元素和(總分)
        int sum = 0;
        for(int x=0; x<arr.length; x++) {
            sum += arr[x];
        }
        
        //平均分:(總分-最高分-最低分)/(arr.length-2)
        int avg = (sum - max - min)/(arr.length-2);
        
        //輸出平均分即可
        System.out.println("該選手的最終得分是:"+avg);
    }
}

1.1.6數(shù)組練習(xí)之不死神兔

1.1.6.1案例代碼

package com.itheima;
/*
 * 需求:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子记餐,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子驮樊,
 * 假如兔子都不死,問第二十個(gè)月的兔子對(duì)數(shù)為多少片酝? 
 * 
 * 規(guī)律:
 *      第一個(gè)月:1
 *      第二個(gè)月:1
 *      第三個(gè)月:2
 *      第四個(gè)月:3
 *      第五個(gè)月:5
 *      ...
 * 
 *      從第三個(gè)月開始囚衔,每個(gè)月的兔子對(duì)數(shù)是前兩個(gè)月的兔子對(duì)數(shù)之和
 *      第一個(gè)月和第二個(gè)月的兔子對(duì)數(shù)都是1
 * 
 * 分析:
 *      A:由于數(shù)據(jù)比較多,所以我們定義數(shù)組實(shí)現(xiàn)    
 *          int[] arr = new int[20];
 *      B:給數(shù)組中的元素賦值
 *          arr[0] = 1;
 *          arr[1] = 1;
 *      C:從第三個(gè)月開始雕沿,根據(jù)規(guī)律賦值
 *          arr[2] = arr[1] + arr[0];
 *          arr[3] = arr[2] + arr[1];
 *          arr[4] = arr[3] + arr[2];
 *          ...
 *      D:輸出第二十個(gè)月的兔子對(duì)數(shù)练湿,其實(shí)就是輸出arr[19]
 */
public class ArrayTest2 {
    public static void main(String[] args) {
        //定義數(shù)組
        int[] arr = new int[20];
        
        //給數(shù)組中的元素賦值
        arr[0] = 1;
        arr[1] = 1;
        
        //從第三個(gè)月開始,根據(jù)規(guī)律賦值
        for(int x=2; x<arr.length; x++) {
            arr[x] = arr[x-1] + arr[x-2];
        }
        
        //輸出第二十個(gè)月的兔子對(duì)數(shù)审轮,其實(shí)就是輸出arr[19]
        System.out.println("第二十個(gè)月的兔子對(duì)數(shù)是:"+arr[19]);
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肥哎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子断国,更是在濱河造成了極大的恐慌贤姆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳衬,死亡現(xiàn)場(chǎng)離奇詭異霞捡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)薄疚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門碧信,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人街夭,你說我怎么就攤上這事砰碴。” “怎么了板丽?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵呈枉,是天一觀的道長(zhǎng)趁尼。 經(jīng)常有香客問我,道長(zhǎng)猖辫,這世上最難降的妖魔是什么酥泞? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮啃憎,結(jié)果婚禮上芝囤,老公的妹妹穿的比我還像新娘。我一直安慰自己辛萍,他們只是感情好悯姊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贩毕,像睡著了一般悯许。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耳幢,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天岸晦,我揣著相機(jī)與錄音欧啤,去河邊找鬼睛藻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛邢隧,可吹牛的內(nèi)容都是我干的店印。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼倒慧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼按摘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纫谅,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤炫贤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后付秕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兰珍,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年询吴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掠河。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猛计,死狀恐怖唠摹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奉瘤,我是刑警寧澤勾拉,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響藕赞,放射性物質(zhì)發(fā)生泄漏苛秕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一找默、第九天 我趴在偏房一處隱蔽的房頂上張望艇劫。 院中可真熱鬧,春花似錦惩激、人聲如沸店煞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顷蟀。三九已至,卻和暖如春骡技,著一層夾襖步出監(jiān)牢的瞬間鸣个,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工布朦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囤萤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓是趴,卻偏偏與公主長(zhǎng)得像涛舍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唆途,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評(píng)論 25 707
  • 1富雅、閱讀時(shí)間:11.1一11.7,耗時(shí)3個(gè)小時(shí)肛搬,具體時(shí)間段:下午4點(diǎn)一5點(diǎn) 2没佑、書籍來源:廣州圖書館 3、書籍類型...
    wei朵兒瑜伽閱讀 306評(píng)論 0 1
  • 春節(jié)假期安排
    夏木子糖閱讀 106評(píng)論 0 0
  • 最近接到兩個(gè)項(xiàng)目温赔,都是和用戶訪談?dòng)嘘P(guān)的蛤奢,一口氣做了十來場(chǎng)訪談。整個(gè)流程下來让腹,對(duì)用戶訪談?dòng)钟辛诵碌恼J(rèn)識(shí)远剩,今天就和大家...
    小釋界閱讀 2,338評(píng)論 0 13