数组的更多使用:
目录
数组的更多使用:
单一元素插入数组:
数组拼接数组:
作业:
统计高于平均分的分数有多少个?
判断两个数组是否对称?
统计字符:
学习心得:
单一元素插入数组:
通过输入数组下标选择插入目的地
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的次数,以此类推。
效果:
学习心得:
今天复习了这一周学的内容,又拓宽了数组的应用:元素插入数组,数组插入数组...目前学习的知识已经基本全部掌握。