zoukankan      html  css  js  c++  java
  • java⑾

    1.数组:

    01.一组 相同数据类型的集合!
    02.数组在内存中会 开辟一串连续的空间来保存数据!

    ***存储30名学生的姓名!

    01.姓名 应该用什么数据类型保存??? String
    02.难道需要创建30个String类型的变量吗??? 不需要

    *********

    人类 [] 1号车厢=new 人类[50];
    找到18号座位的乘客
    1号车厢[18]="小黑";

    *********

    ***数组的基本要素:
    元素的类型: 人类 数组中每个元素的数据类型
    标识符: 1号车厢 数组的名称
    数组的长度: [50]
    数组的元素:"小黑"
    元素的下标:[18] 数组的下标从0开始!

    想访问到数组中的元素,必须通过数组的下标来访问!

    ***语法:

    数据类型 [] 数组名称=new 数据类型 [大小];

    ***使用:

    01. 声明数组 创建一个火车车厢
    int [] nums;

    02.分配空间 给火车创建座位
    nums=new int[5];

    03.赋值 乘客入座
    nums[0]=50;
    **************************************************
    数组的长度一旦被定义,不允许被改变!

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

    2.经典案例

    01.

    public static void main(String args[]) {
    /**
    * 需求:
    * 想创建一个能保存5名学员成绩的数组!
    *
    * 分析:
    * 01.学员成绩都是double类型
    * 02.5学员是一个集合
    *
    * 相同数据类型的一组数据的集合=======》数组
    */

    // double[] scores = new double[5]; 在声明数组的同时,在内存中开辟了5个连续的空间!
    // System.out.println(scores[5]); 数组下标越界

    String[] scores;// 声明数组
    scores = new String[5]; // 开辟空间

    /**
    scores[0] = "小黑1";
    scores[1] = "小黑2";
    scores[2] = "小黑3";
    scores[3] = "小黑4";
    scores[4] = "小黑5";
    * 使用循环给5名学生的姓名赋值
    *
    * scores.length:获取数组的长度
    *
    * 数组的下标最大值=数组的长度-1
    */
    Scanner input = new Scanner(System.in);
    for (int i = 0; i < scores.length; i++) {
    System.out.println("请您输入下标是" + i + "的姓名");
    scores[i] = input.next();
    }

    // 遍历==》把集合中的每个元素打印出来

    for (int i = 0; i < scores.length; i++) {
    System.out.println(scores[i]);
    }

    }
    02.

    public static void main(String[] args) {
    /**
    * 求数组的最大值 和 最小值
    */

    // 定义一个数组 参赛的选手
    int[] nums = { 50, 20, 100, 30, 400, 800 };
    // 默认第一个元素先上台 擂主
    int max = nums[0];
    // 循环比较 打擂
    for (int i = 0; i < nums.length; i++) {
    // 如果发现 元素比 我们的max值大,那就让这个元素成为max
    if (nums[i] > max) {
    max = nums[i];
    System.out.println("历届的擂主:" + max);
    }
    }
    System.out.println("我最NB==》" + max);

    }

    03.

    /**
    *
    * 需求:
    * 有一组数据{10,5,6,80,100}
    * 01.循环输出数组中的每一个元素
    * 02.求数组中所有元素的和
    * 03.猜字游戏,让用户输入一个数字,然后进行循环比较
    */
    public static void main(String[] args) {
    // 创建一个数组 保存这组数据
    int nums[] = { 10, 5, 6, 80, 100 };
    // 定义一个变量保存总数
    int sum = 0;
    System.out.println("*****遍历数组******");
    for (int i = 0; i < nums.length; i++) {
    sum += nums[i];
    System.out.println(nums[i]);
    }
    System.out.println("总和为:" + sum);

    System.out.println("请您输入一个数字:");
    Scanner input = new Scanner(System.in);
    int choose = input.nextInt();
    boolean flag = false; // 默认没有找到
    // 循环比较 于数组中的每一个元素进行比对
    for (int i = 0; i < nums.length; i++) {
    if (choose == nums[i]) {
    flag = true;
    break; // 找到之后直接退出循环
    }
    }
    if (flag) {
    System.out.println("恭喜您中奖!");
    } else {
    System.out.println("很遗憾......");
    }

    }

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

    3.拓展::::

    01.

    public class ArraysDemo02 {

    /**
    * Arrays是操作数组的工具类!
    * int: 集合中每一个元素的数据类型
    * num:只是一个变量名,保存每一个需要输出的元素
    * nums:需要遍历的集合
    * for(int num:nums){
    * }
    */
    public static void main(String[] args) {
    int[] nums = { 50, 20, 100, 30, 400, 800 };
    System.out.println("排序之前");
    for (int num : nums) {
    System.out.println(num);
    }
    // 01.实现数组的排序
    Arrays.sort(nums);
    // 使用for加强 实现遍历
    System.out.println("排序之后");
    for (int num : nums) {
    System.out.println(num);
    }
    // 02.把数组转换成一个字符串
    String result = Arrays.toString(nums);
    System.out.println(result);
    // 03.将数组中的所有元素都改变成一个值
    Arrays.fill(nums, 521);
    System.out.println("看看所有的元素是否被改变");
    for (int num : nums) {
    System.out.println(num);
    }
    System.out.println("新数组");
    // 04.将数组复制成一个新数组
    nums = Arrays.copyOf(nums, 10);
    for (int num : nums) {
    System.out.println(num);
    }
    // 05.查询某个元素 在 数组中的位置 前提 必须 先排序
    int[] nums2 = { 50, 20, 100, 30, 400, 800 };
    Arrays.sort(nums2);
    int index = Arrays.binarySearch(nums2, 400);
    System.out.println("400出现的位置是:" + index);

    // 将一个Stirng类型的字符串转换成 char类型的数组
    String a = "50,20,100,30,400,800";
    char[] words = a.toCharArray();
    for (char c : words) {
    System.out.print(c);
    }
    }

    02.

    /**
    * 需求:
    * 01.以,为分割点,把String转换成一个数组
    * 02.把String转换成int之后求和
    */
    public static void main(String[] args) {
    String a = "50,20,100,30,400,800";
    String[] words = a.split(",");
    // 定义一个变量保存 和
    int sum = 0;
    for (int i = 0; i < words.length; i++) {
    sum += Integer.parseInt(words[i]);
    }
    System.out.println(sum);

    System.out.println("*************字符的逆序输出***************");
    char[] chars = { 'z', 'f', 'g', 'c', 'a', 'b', 'j' };
    Arrays.sort(chars);
    for (char c : chars) {
    System.out.println(c);
    }

    for (int i = chars.length - 1; i >= 0; i--) {
    System.out.println(chars[i]);
    }

    }

  • 相关阅读:
    CF932E Team Work(第二类斯特林数)
    BZOJ 3732: Network(Kruskal重构树)
    BZOJ 2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
    BZOJ 2286: [Sdoi2011]消耗战(虚树+树形dp)
    hdu 4336 Card Collector(状压dp/Min-Max反演)
    BZOJ 3622: 已经没有什么好害怕的了(二项式反演)
    BZOJ 2839: 集合计数(二项式反演)
    CF gym 101933 K. King's Colors(二项式反演)
    BZOJ 1101: [POI2007]Zap(莫比乌斯反演)
    BZOJ 3747: [POI2015]Kinoman(线段树)
  • 原文地址:https://www.cnblogs.com/wwlw/p/7324236.html
Copyright © 2011-2022 走看看