4.数组

数组基本知识点

  • 数组是一个变量,存储相同数据类型的一组数据,数组中的所有元素必须属于相同的数据类型
  • 声明数组就是在内存空间画出一串连续的空间
  • 数组基本要素
    --1.标示符:数组的名称,用来区分不同的数组
    --2.数组元素:向数组中存放的数据
    --3.元素下标:对数组元素进行编号,从0开始
    --4.元素类型:数组元素的数据类型
  • 数组的长度固定不变,避免数组越界
  • 声明数组并且分配空间
    --数据类型[ ] 数组名 = new 数据类型[大小]
int[] array = new int[];
  • 赋值
    --1.边声明边赋值
int[] score = {77,88,99};
int[] score  = new int[] {77,88,99};

--2.从键盘录入信息并赋值

Scanner input = new Scanner(System.in);
for (inti= 0;i < 10 ;1++)
{
score[i] = input.nextInt();
}

练习题

对数组进行声明和赋值

  • 计算5个学员的平均分
public class linshi {
    public static void main(String[] args) {
        int[] array = new int[5];
        int total=0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入5人成绩");
        for (int i = 0;i < array.length;i++)
        {
            array[i] = scanner.nextInt();
            total = total + array[i];
        }
        System.out.println("平均成绩是:" + (double)total/array.length);
    }
}

含有判断的数组

  • 有一个数列:8,4,2,1,23,344,12;循环输出数列的值;求数列中所有数值的和;猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
public class linshi {
    public static void main(String[] args) {
        int[] array = {8,4,2,1,23,344,12};
        int total = 0;
        for (int i = 0;i < array.length;i++)
        {
            System.out.println(array[i]);
            total = total + array[i];
        }
        System.out.println("数列中所有数值的和" + total);
        Scanner scanner = new Scanner(System.in);
        System.out.println("请从键盘中任意输入一个数据");
        int number = scanner.nextInt();
        int i = 0;
        for ( i = 0;i < array.length;i++)
        {
            if (number == array[i])
            {
                System.out.println("包含此数");
                break;
            }
        }
        //说明循环了一圈都没有发现与用户输入的值相等
        if (i==array.length)
        {
            System.out.println("不包含此数");
        }
    }
}

数组排序

  • 循环录入5位学员成绩,进行升序排列后输出结果
    --Arrays.sort(数组名);是岁数组进行升序排列
public class linshi {
    public static void main(String[] args) {
        int[] grade = new int[5];
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入五位学员成绩");
        for (int i = 0; i < grade.length; i++)
        {
            grade[i] = scanner.nextInt();
        }
        Arrays.sort(grade);
        System.out.println("按升序排列");
        for (int i = 0; i < grade.length; i++)
        {
            System.out.println(grade[i] + " ");
        }
    }
}

查找数组中的最大值

  • 从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
public class linshi {
    public static void main(String[] args) {
        int[] grade = new int[5];
        int max = 0;
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入java考试五位学生的成绩");
        for (int i = 0; i < grade.length; i++)
        {
            grade[i] = scanner.nextInt();
            if (max < grade[i])
            {
                max = grade[i];
            }
        }
        System.out.println("考试成绩最高分是" + max);
    }
}

数组插入算法

  • 有一组学员的成绩{99,85,82,63, 60},将它们按升序排列。要增加一个学员的成绩,将它插入成绩序列,并保持升序。



    --分析:
    1.将成绩序列保存在长度为6的数组中
    2.通过比较找到插入位置
    3.将该位置后的元素后移一个位置
    4.将增加的学员成绩插入到该位置

public class linshi {
    public static void main(String[] args) {
       int[] grade ={99,85,82,63,60};
       Arrays.sort(grade);
       for (int i = 0;i < grade.length;i++)
       {
           System.out.println(grade[i]);
       }
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入新增成绩:");
       int input = scanner.nextInt();
       int pos = 0;//用户新输入的数在新数组中的位置
//遍历原数组,找到要插入的位置
       for (int i = 0;i < grade.length;i++)
       {
           if (input <= grade[i])
           {
               pos = i;
               System.out.println("插入的下标是" + pos);
               break;
           }
       }
        int[] grade1 = new int[6];
//拷贝旧数组从0开始,到pos位置的数到对应新数组同样下标中
       for (int i = 0;i < pos;i++)
       {
           grade1[i] = grade[i];
       }
        grade1[pos] = input;
//拷贝旧数组从pos+1开始, 到旧数组长度位置的数到对应新数组同样下标中
        for (int i = pos + 1;i < grade1.length ;i++)
        {
            grade1[i] = grade[i - 1];
        }
        System.out.println("插入后的成绩序列是:" );
        for (int i = 0;i < grade1.length;i++)
        {
            System.out.println(grade1[i] + " ");
        }
    }
}

字符逆序输出

  • 将 一组乱序的字符进行排序,进行升序和逆序输出



    --分析:
    1.创建数组存储原字符序列
    2.利用Array类的sort( )方法对数组进行排序,并循环输出
    3.从最后一个元素开始,将数组中的元素逆序输出

public class linshi {
    public static void main(String[] args) {
       char[] charArray = {'a','c','u','b','e','p','f','z'};
       System.out.print("原字符序列:");
       System.out.println(charArray );//字符类型的数组没循环操作进行输出时不能加其他修饰,例如:System.out.print( charArray[i] + "\t");
       Arrays.sort(charArray);
       System.out.print("升序排列后:");
       System.out.println(charArray);
       System.out.print("逆序输出为:");
       for (int i =charArray.length-1;i>=0;i--)
        {
            System.out.print( charArray[i] + "\t");
        }
    }
}
  • 向上一个练习中得到的升序字符序列中插入一个新的字符,要求插入之后字符序列仍保持有序



字符串数组

  • 定义一个字符串数组,查找某个字符串在数组中出现的次数
public class linshi {
    public static void main(String[] args) {
        String[] array = {"大乔","貂蝉","昭君","小乔"};
        String meinv ="小乔";
        int count = 0;
//count计数,meibv在数组中出现的次数
        for (int i = 0;i < array.length;i++)
        {
            if (array[i].equals(meinv)) {
                count++;
            }
            System.out.println(count);
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容

  • 配套视频教程 本文B站配套视频教程[https://www.bilibili.com/video/BV1fp4y1...
    __豆约翰__阅读 1,791评论 3 14
  • 面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法面试算法知识梳理(2) - 字符串算法第一部分面试算...
    泽毛阅读 1,230评论 0 7
  • 我们在生活中常常需要使用集合的概念,比方说我们去市场买葡萄,我们不太可能只买一粒葡萄,对吧?我们应该买的是一串。这...
    八条8tiao阅读 407评论 7 2
  • 这是我在github 上发现的一个原生js挑战项目,由于是js小白,希望通过这次的项目加深对js的理解 第4天主要...
    lijianliang阅读 379评论 0 0
  • 文:赵欣,2岁男孩的妈妈,正面管教讲师,青岛37度妈咪创始人。 正文开始: 很多妈妈抱怨孩子大了之后完全不做家务,...
    赵欣Ella阅读 1,324评论 2 2