java第一章----基础语法(6) 数组

数组

​ 特点:

​ 数组中的元素必须是同一种数据类型

​ 数组长度不能更改 //数组中的元素不能增删,会造成长度改变,只能新建数组;

相关例题
  1. 创建一个int类型的数组,使用静态初始化赋值,求数组中元素之和,和平均值
public class Test{
//创建一个int类型的数组,使用静态初始化赋值,求数组中元素之和,和平均值
	public static void main(String[] args) {
		int[] arr = new int[]{12,24,2,6,54,24,76,71,19};
        //int[] arr = {12,24,2,6,54,24,76,71,19};  可以简写为这种形式
		int sum=0;
		for(int i=0;i<arr.length;i++){
			sum+=arr[i];
		}
		System.out.println("数组元素之和为"+sum);
		System.out.println("数组元素平均值为"+1.0*sum/arr.length); //平均值需要转为double
        //System.out.println("数组元素平均值为"+((double)sum)/arr.length); //先将sum转为double
	}
}

  1. 创建一个boolean类型的4个元素的数组,存储:false ,true, false true
public class Test{
		public static void main(String[] args) {
			//创建一个boolean类型的4个元素的数组,存储:false ,true, false true
			boolean[]  boo = new boolean[]{false,true,false,true};  //静态方法
			for(int i = 0 ; i < boo.length;i++){
				System.out.print(boo[i]+"\t");
			}
			System.out.println();
			System.out.println("--------------------");
			boolean[] boo2 = new boolean[4]; //动态方法 数组中元素默认值为false
			boo2[1] = true;
			boo2[3] = true;  //只需要改1和3为true;因为其他默认为false
			for(int i = 0 ; i < boo.length;i++){
				System.out.print(boo[i]+"\t");
			}
            //打印数组还有一个方法,后面要学习  很重要  Arrays.toString(数组名)
            //System.out.println(Arrays.toString(boo2));
		}
}
  1. 点名系统: 从班级所有人的姓名中随机抽选出来一个,祝她生日快乐

​ 构建一个String[] 用来存储全班同学的姓名

​ 生成一个随机数,作为索引值,从数组从把该索引对应的元素取出来

​ new Random().nenextInt(10); // [0,10) 注意取出的数的范围

import java.util.Random;

public class Test{
	public static void main(String[] args) {
		String[] names= {"张三","李四","王五","赵六","钱七","孙八","周九","吴十"};
		Random random = new Random();  // ctrl+shift+o  可以自动调取包
		int i = random.nextInt(names.length);// [0,8)生成随机整数,左闭右开 即[0,7]
		System.out.println("今天"+names[i]+"过生日,我们祝他生日快乐");
	}
}

二维数组

二维数组在创建时,其第一层储存的时一个地址值,然后每个地址值对应一个一维数组

数组工具类封装(数组与定义方法结合)

​ 将一些方法定义在一个特定的类里面,这些方法会被经常使用,比如打印数组,数组的逆序,数组排序等功能

​ 在调用时只需要用 类名.方法名(参数列表)

public class ArrayUtil {
	
	//int类型的数组的遍历
	
	public static void printArr(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			if(arr.length == 1) {
				System.out.println("["+arr[0]+"]");
			}else if(i == 0) {//第一个元素, [元素,
				System.out.print("["+arr[i]+",");
			}else if(i == arr.length-1) {//最后一个元素, 元素值]
				System.out.println(arr[i]+"]");
			}else {
				System.out.print(arr[i]+",");
			}
		}
	}
	
	
	//String类型的数组的遍历
	public static void printArr(String[] arr) {  //方法的重载
		for(int i=0;i<arr.length;i++) {
			if(arr.length == 1) {
				System.out.println("["+arr[0]+"]");
			}else if(i == 0) {//第一个元素, [元素,
				System.out.print("["+arr[i]+",");
			}else if(i == arr.length-1) {//最后一个元素, 元素值]
				System.out.println(arr[i]+"]");
			}else {
				System.out.print(arr[i]+",");
			}
		}
	}
	
	//打印数组中最大值和最小值
	public static void printMaxAndMin(int[] arr) {
		int max = arr[0];
		int min = arr[0];
		for(int i=0;i<arr.length;i++) {
			if(arr[i]>max) {
				max = arr[i];
			}
			if(arr[i]<min) {
				min = arr[i];
			}
		}
		System.out.println("最大值为:"+max);
		System.out.println("最小值为:"+min);
	}
	//交换数组中的两个元素
	public static void swap(int[]arr,int x,int y) {
		int temp = arr[x];
		arr[x] = arr[y];
		arr[y] = temp;
	}
	//数组的逆序1
	public static void  reverse(int[] arr){
		for(int i = 0; i < arr.length/2;i++){				
			int tmp = arr[i];
			arr[i] = arr[arr.length-i-1];
			arr[arr.length-i-1] = tmp;
		}	
	}
	//数组的逆序2
	public static void reverse1(int[] arr) {
		for(int start=0,end=arr.length-1;start<end;start++,end--) {
			int temp = arr[start];
			arr[start] = arr[end];
			arr[end] = temp;
		}
	}
	
	// 数组元素查找,返回索引值
	public static int indexOf(int[]arr,int num){
		for(int i=0;i<arr.length;i++){
			if(arr[i]==num){
				return i;
			}
		}
		return -1; //如果返回是-1 表明没有此元素
	}
}

数组中常见的两种异常

​ 空指针异常

​ 数组角标越界异常

public class ArrayDemo4 {
	public static void main(String[] args) {
		int[] arr = null;
		System.out.println(arr);//null
		//是用null  调用里面的东西
		//System.out.println(arr.length);  //空指针异常
		
		String str = null;
		System.out.println("爱".equals(str));  //不用str.equals("爱”),否则会报空指针异常
		
		arr = new int[3];
		System.out.println(arr[3]);   //数组下标越界  元素索引最大为2 
	}
	
}

双色球案例 **************

​ 创建一个数组,放6个红球和1个蓝球,
​ 红球选6个:1–33之间 红球不能重复
​ boolean[33]
​ 蓝球选1个:1–16之间

import java.util.Arrays;
import java.util.Random;
//双色球需求:红球选六个,蓝球选一个
//红球6个:1--33
//篮球1个:1--16
public class DoubleBoll {
	public static void main(String[] args) {
		boolean []  arr = new boolean[33]; //建一个boolean数组,其每个元素默认值为false
		int count = 0; //红球个数
		while(true){
			int index = new Random().nextInt(33);
			if(! arr[index]){ //当index对应的元素为flase,表明还没使用过;如果为true,表明使用过了,跳过
				arr[index] =true; //将其改为true
				count ++;//计数加1,表明红球数目加1
			}
			if (count ==6){ //球数够6个就终止循环
				break;
			}
		}
		int [] qiu = new int[7];//存放所有的球 一共7个 6个红 1个蓝
		for(int i = 0;i<arr.length;i++){//去boolean数组中找元素为true的,将其索引+1赋给qiu数组中的元素   为什么时索引+1 呢  因为其索引范围时0-32  我们要的是1-33之间的数
			if(arr[i] == true){
				count--; //表示红球放进去了一个
				qiu[count] = i+1; 
			}
		}
		qiu[6] = new Random().nextInt(16)+1;  //第6个球 从1-16之间取一个
		System.out.println(Arrays.toString(qiu));  //打印数组  也可以用我们封装好的数组工具类中的方法打印数组
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值