java 01 数组知识及案列


数组

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("账号或密码错误");
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值