java 01 数组知识及案列

mac2022-06-30  129


数组

1.数组的概念 数组:就是一个容器,用来储存数据(数组可以是基本类型,也可以是引用类型) 2.数组的基本使用

先声明及初始化数组 int[] arr=new int[];

3.数组遍历的方式 for循环 增强for

数组的特点

数组本身是一个引用数据类型 数组是在堆内存中的一串连续的地址存在 数组在初始化时必须指定长度 堆内存的数组空间长度一旦确定 不能再次发生改变 栈内存的变量中存储的是数组的地址引用 数组内部存储的类型可以是基本的 也可以是引用

数组的案列

1.创建一个数组用来存储1-100之间的奇数

/* 分析: 1.遍历1-100的之间的奇数, 2.判断i%2!=0是否不等0 是 添加一个计数器,记录i%2!=0的个数 3.创建一个动态数组 4.遍历1-100的之间的奇数, 5..判断i%2!=0是否不等0 是 将不等于的数存入数组中 */ public class Demo{ public static void main(String[] args){ int count=0; int index=0; for(int i=1;i<100;i++){ if(i%2!=0){ count++; } } System.out.println(count); int[] arr=new int[count]; for(int i=1;i<100;i++){ if(i%2!=0){ arr[index++]=i; } } for(int value:arr){ System.out.print(value+"\t"); } } }

2.给定两个数组a{1,2,3,4} b{5,6,7,8} 将两个数组内的元素对应位置互换

/* 分析: 思路1: 1.对数组进行遍历, 2.定义一个临时变量,用来存储要交换的值 思路2: 1.定义一个临时数组并赋值 2.进行交换 */ public class Demo{ public static void main(String[] args){ int[] arr1={1,2,3,4,5}; int[] arr2={6,7,8,9,10}; //思路1: /* for(int i=0;i<arr1.length;i++){ int temp=arr1[i]; arr1[i]=arr2[i]; arr2[i]=temp; } */ int[] temp=arr1; arr1=arr2; arr2=temp; for(int arr:arr1){ System.out.print(arr+"\t"); } System.out.println(); for(int arr:arr2){ System.out.print(arr+"\t"); } } }

3.给定一个数组arr{1,2,3,4,5,6} 将这个数组中的元素头尾对应互换位置

/* 分析: 1.将数组进行遍历,将数组的长度除以2 arr[0]---------------------arr[5] arr[1]---------------------arr[4] arr[2]---------------------arr[3] */ public class Demo{ public static void main(String[] args){ int[] arr={1,2,3,4,5,6} ; for(int i=0;i<arr.length/2;i++){ int temp=arr[i]; arr[i]=arr[(arr.length-1)-i]; arr[(arr.length-1)-i]=temp; } for(int item:arr){ System.out.println(item); } } }

4.给定一个数组,计算数组的所有平均值

public class Demo{ public static void main(String[] args){ int[] arr={1,2,3,4,5,6}; double value=0; for(int i=0;i<arr.length;i++){ value+=arr[i]; } System.out.println("平均值:"+value/arr.length); } }

5.求数组的最大值和最小值

public class Demo{ public static void main(String[] args){ int[] arr={1,3,5,7,9,0,2,4,6,8}; int max=arr[0]; int min=arr[0]; for(int i=1;i<arr.length;i++){ if(max<arr[i]){ max=arr[i]; } if(min>arr[i]){ min=arr[i]; } } System.out.println("最大值:"+max); System.out.println("最大值:"+min); } }

6.将两个数组合并成一个新数组

/* 分析: 1.创建一个新数组,新数组的长度等于两个数组长度之和 2.遍历旧数组,将旧数组的值赋值给新数组 */ public class Demo{ public static void main(String[] args){ int[] arr1={1,2,3,4,5}; int[] arr2={14,15}; int[] newArr=new int[arr1.length+arr2.length]; for(int i=0;i<arr1.length;i++){ newArr[i]=arr1[i]; } for(int i=0;i<arr2.length;i++){ newArr[i+arr1.length]=arr2[i]; } for(int value:newArr){ System.out.print(value+"\t"); } } }

7.给定一个数组,按照数组中的最大值位置 将数组拆分成两个

/* 分析: 1.先遍历数组,找到数组的最大值 2.定义一个变量,记录数组最大值的索引 3.创建两个数组,第一个数组的长度等于记录数组索引的变量 第二个数组的长度等于旧数组的长促减去第一个数组的长度 4.循环数组,将值赋值给数组 */ public class Demo{ public static void main(String[] args){ public static void show6(){ int[] oldArr={22,45,78,23,56,98,41,31,87,68}; int max=oldArr[0]; int index=0; for(int i=1;i<oldArr.length;i++){ if(oldArr[i]>max){ max=oldArr[i]; index=i; } } System.out.println("最大值的索引:"+index); int[] arr1=new int[index]; int[] arr2=new int[(oldArr.length-1)-index]; for(int i=0;i<arr1.length;i++){ arr1[i]=oldArr[i]; } for(int i=0;i<arr2.length;i++){ arr2[i]=oldArr[(index+1)+i]; } for(int value:arr1){ System.out.println(value); } System.out.println("=================================="); for(int value:arr2){ System.out.println(value); } } }

8.给定一个数组,将指定的数组的值去掉,生成一个新数组

public class Demo{ public static void main(String[] args){ //给定一个数组a{1,2,3,0,0,4,5,0,6,0,7} //去掉数组中的0元素 (创建一个新数组 短的 非零元素挑出来) /* 分析: 1.遍历数组 2.判断数组中的值等不等于0 不等于0 定义一个变量 记录不等于零的个数 3.创建一个新数组 数组的长度就等于不等于零的个数 4.对旧数组进行遍历 5.判断将数组中不等于零的值存入新数组 */ public static void show7(){ int[] arr= {1,2,3,0,0,4,5,0,6,0,7}; //1.遍历数组 int count=0; int index=0; for(int i=0;i<arr.length;i++){ //2.判断数组中的值等不等于0 不等于0 定义一个变量 记录不等于零的个数 if(arr[i]!=0){ count++; } } //创建一个新数组 数组的长度就等于不等于零的个数 int[] newArr=new int[count]; //3.创建一个新数组 数组的长度就等于不等于零的个数 for(int i=0;i<arr.length;i++){ if(arr[i]!=0){ //定义一个变量,用来记录newArr的索引 newArr[index++]=arr[i]; } } for(int value:newArr){ System.out.println(value); } } }

9.将2-100之间的素数存储到数组中

public class Demo{ public static void main(String[] args){ int count=0; int index=0; for(int i=2;i<100;i++){ boolean flag=false; for(int j=2;j<i-1;j++){ if(i%j==0){ flag=true; } } if(!flag){ count++; } } int[] arr=new int[count]; for(int i=2;i<100;i++){ boolean flag=false; for(int j=2;j<i-1;j++){ if(i%j==0){ flag=true; } } if(!flag){ arr[index++]=i; } } for(int value:arr){ System.out.println(value); } } }

10.实现用户登录功能

import java.util.Scanner; public class UserLogin{ public static void main(String[] args){ //1.从数据库拿到数据(没得数据库,用数组代替) String[] str={"谭淋","java","python"}; int[] arr={123,456,789}; //2.用户输入的名字和密码 Scanner scan = new Scanner(System.in); System.out.println("请输入您的账号:"); String user=scan.nextLine(); System.out.println("请输入您的密码:"); int pwd=scan.nextInt(); //3.数据库进行遍历 boolean flag=false; for(int i=0;i<str.length;i++){ //4.对用户输入的账号进行判断 对 停止遍历账号 进行密码判断 if(str[i].equals(user)){ if(arr[i]==pwd){ System.out.println("登陆成功"); }else{ System.out.println("账号或密码错误"); } flag=true; break; } } if(!flag){ System.out.println("账号或密码错误"); } } }
最新回复(0)