*****************************************************************************
数组、二维数组
*****************************************************************************
1、作业讲解
2、声明数组:
数据类型[] 数组名={值,值}; 声明的同时并赋值{} 字面量方式
数据类型[] 数组名=new 数据类型[长度];
数组的长度: int a=数组名.length; 值的个数
数组的特点:数据类型相同
长度固定
内存空间连续 读取元素效率高
值不唯一,有序
索引:Java按照数组元素的顺序的编号,从0开始
int[] score={90,98,100};
访问数组元素: System.out.print(score[3]);// 报异常 ArrayIndexOutOfBoundsException 数组越界异常
for(int i=0; i<score.length; i++){
print(score[i]);
}
1、数组的使用
2、数组的排序 重要 冒泡 选择
3、二维数组
1、数组的使用
声明方式1:字面量 声明数组的同时并赋值
声明方式2:构造方式 new 声明的时候不赋值
数据类型[] 数组名= new 数据类型[长度];
Demo1.java
练习:声明数组长度为6; 循环输入赋值
赋值后,输出索引是偶数的数组值
Demo2.java
2、数组元素的排序
int[] aryNum={89,60,90,78,89,100,56};
for(int i=0; i<aryNum.length-1; i++){
for(int j=0; j<aryNum.length-i-1; j++){
//两两相邻
if(aryNum[j]>aryNum[j+1]){
//交换位置
int c=aryNum[j];
aryNum[j]=aryNum[j+1];
aryNum[j+1]=c;
}
}
}
Demo3.java
算法:解决某个事情的计算方法
冒泡排序法: 两两相邻元素比较
1、外层循环控制排序的轮数
2、内层循环控制每一轮内两两相邻数据的比较
选择排序法:
案例:产生双色球
红色球:6个 1-33
蓝色球:1个 1-15
工具:随机数类 Random
1、import java.util.Random;
2、Random rd=new Random();
3、int num=rd.nextInt(10);
Demo4.java
1、声明数组存放6个红球
int[] redBall=new int[6];
2、在死循环中产生红色球
int index=0;
while(true){
3、产生一个红色球
int ball=rd.nextInt(33-1+1)+1;
boolean flag=true //默认为不重复
4、用生成的ball和数组中的每一个元素对比,看是否重复
for(int i=0; i<redBall.length; i++){
if(ball==redBall[i]){
flag=false;
break;
}
}
5、判断不重复的情况下,应该存入数组
if(flag){
//不重复
//存入数组
redBall[index]=ball;
index++;
}
}
//内容总结:
1、数组的相关概念:数组名 数组长度 数组元素 索引
2、数组在内存中存放的原理
3、遍历数组元素 遍历过程中的计算
4、冒泡排序:两两相邻元素比较
选择排序:某个元素和其后每一个元素逐个进行比较
重点:排序规则 代码实现
5、双色球程序
作业:1、昨天作业:敲一遍
2、梳理、理解今日内容,重敲课堂案例
3、作业:
3.1:随机点名程序: 把名字存入数组中,随机产生数组索引
3.2:成绩管理系统
要求:1、菜单可以循环输入
2、实现菜单中的功能
3、使用方法实现
1、成绩录入
2、计算总分
3、计算平均分
4、输出最高分 尝试两种方式
5、输出最低分