7月16 学习笔记

数组的更多使用:
目录

数组的更多使用:

单一元素插入数组:

数组拼接数组: 

作业:

统计高于平均分的分数有多少个?

判断两个数组是否对称?

统计字符:

 学习心得:

单一元素插入数组:
通过输入数组下标选择插入目的地

        Scanner sc = new Scanner(System.in);
        int []arr=new int[]{1,2,3,4,5,6};
        System.out.println("请输入下标");
        int index=sc.nextInt();;
        System.out.println("请输入插入数据");
        int num=sc.nextInt();;
        /*
            1.因为数组已满,需要扩容
            2.找到要插入的数据的位置
            3.插入位置后面的数据需要往后移
         */
        //数组扩容
        int []arr2=new int[arr.length+1];
        for (int i = 0; i < arr.length; i++) {
            arr2[i]=arr[i];
        }
        arr=arr2;
        int temp=arr[index];//定义一个临时变量,存储原来index位置的元素
        for(int i=arr.length-index-1;i>0;i--){
            arr[i+index]=arr[index+i-1];//利用循环把后面的值“移”一位
        }
        arr[index]=num;//把要插入的数存到指定的位置。
        System.out.println(Arrays.toString(arr));//打印输出数组

代码实现结果:

数组拼接数组: 
        int [] arr = new int[2];
        int [] arr2=new int[2];
        int []arrAdd=new int[arr.length+arr2.length];//定义一个新数组长度是两个数组长度之和
        for (int j = arr.length; j >0; j--) {
            arrAdd[j-1]=arr[j-1];//把第一个数组赋值到前面
            arrAdd[j+arr.length-1]=arr2[j-1];//把第二个数组赋值到第一个数组长度后面
        }
        System.out.println(Arrays.toString(arrAdd));
作业:
统计高于平均分的分数有多少个?
提示:

定义数组[95, 92, 75, 56, 98, 71, 80, 58, 91, 91]。

定义getAvg方法,获取一个数组中的平均数

代码实现:

    public static int getAvg(int[] arr) {
        int avg = 0, sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        avg = sum/arr.length;
        return avg;
    }
    public static void main(String[] args) {
        int []arr=new int[]{95, 92, 75, 56, 98, 71, 80, 58, 91, 91};
        int add=0;
        for (int i = 0; i <arr.length ; i++) {
            if(arr[i]>getAvg(arr)){
                add++;
            }
        }
        System.out.println("高于平均分:"+getAvg(arr)+"的个数有"+add+"个");
    }

判断两个数组是否对称?
package com.sort;
 
import java.util.Arrays;
 
public class homework05 {
    public static boolean sym(int []arr){
        boolean yesNo=true;
        for (int i = 0; i <arr.length ; i++) {
            if(arr[i]==arr[arr.length-1-i]){
            }else {
                yesNo=false;
            }
        }
        return yesNo;
    }
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 3, 2, 1};
        int[] arr2 = new int[]{1, 2, 3, 4, 5, 2, 1};
        System.out.println(Arrays.toString(arr)+"是否对称:"+sym(arr));
        System.out.println(Arrays.toString(arr2)+"是否对称:"+sym(arr2));
 
    }
}

统计字符:
字符数组:{'a','l','f','m','f','o','b','b','s','n'}

定义printCount方法,统计每个字符出现的次数并打印到控制台。

代码实现:

package com.sort;
 
public class homework07 {
    public static void printCount(char[] arr) {
        char [] smallLetter = new char[26];//创建字符数组存储的是26个小写英文字母
        char letter = 97;//代表a的ascII码
        for (int i = 0; i < smallLetter.length; i++,letter++) {
            smallLetter[i] = letter;
        }
        //创建一个计数数组
        int[] countLetter = new int[26];
        //每一个charArray元素都和26个字母进行比较
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < countLetter.length; j++) {
                if(arr[i] == smallLetter[j]) {
                    countLetter[j]++;
                    break;
                }
            }
        }
        //统计并输出charArray每一个字符出现的次数
        a:for (int i = 0; i <smallLetter.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if(smallLetter[i] == arr[j]) {
                    System.out.println(arr[j] + "--" + countLetter[i]);
                    continue a;
                }
            }
        }
    }
    public static void main(String[] args) {
        char [] arr =new char[]{'a','l','f','m','f','o','b','b','s','n'};
        printCount(arr);
    }
}

 将数字强制转换,根据ASCII码表转换为字符。

可以定义长度26的数组,每个元素,对应去保存每种字符的出现次数,比如0索引保存a的次数,1索引保存b的次数,以此类推。

效果:

 学习心得:
今天复习了这一周学的内容,又拓宽了数组的应用:元素插入数组,数组插入数组...目前学习的知识已经基本全部掌握。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值