1、1,Java 语法基础,2,回顾2-1,分别写出运行结果,switch(day)case 1: System.out.println(“法国大餐“); break;case 2:case 4:System.out.println(“满汉全席“); break;case 7:if (weekOfMonth = 1) System.out.println(“苹果餐“); else System.out.println(“香蕉餐“);break; ,法国大餐,香蕉餐,3,回顾2-2,while循环和do-while循环结构之间的异同?,int i = 0, j = 0;while(i4)System
2、.out.println(“*“);i+;continue;System.out.println(“*“);j+;i+;,* * * * * * *,写出运行结果,输出,4,1、一次Java内部测试结束后,老师给令狐冲分配了一项任务,计算全班(30人)的平均分,为什么需要数组3-1,int stu1 = 95; int stu2 = 89; int stu3 = 79; int stu4 = 64; int stu5 = 76; int stu6 = 88; avg = (stu1+stu2+stu3+stu4+stu5+stu30)/30,30个变量太繁琐,5,解决方法二:循环(动态录入学生
3、成绩),Scanner input = new Scanner(System.in);int score = 0;int sum = 0;double avg = 0.0;for(int i = 0; i 30; i+) System.out.println(“请输入下一个同学的成绩“);score = input.nextInt();sum = sum + score;avg = sum/30.0;,通过循环实现。 但不能保留每个同学的成绩,以便完成其他操作,比如:把Java课程成绩按从低到高输出显示,6,生活案例:博物架,为什么需要数组3-2,字画类,好办法分类放,易于找1、格子提供了存储
4、空间 2、每一类别都起一个名字 3、每件物品都有个标号,古玩类,7,类比博物架:可不可以把数据归类存放? 分类存放不同类型的数据,为什么需要数组3-3,int类型,double类型,char类型,8,数组在内存中的存储,80,内存,整型数组 int b = 100,98,;,整型变量 int a = 80;,9,数组定义,数组是一个变量,存储相同数据类型的一组数据,int类型,元素,博物架名,标识符,古玩,物品编号,元素下标,物品类型,元素类型,数据,10,小结1,1、使用数组的好处是什么? 2、下列哪组数据能存储在数组中?数组的类型是什么? “刘星”,“夏雨”,“夏雪” 8,98,c,23
5、98.1,341.2,34.3,数组中的所有元素必须属于相同的数据类型,String型,double型,11,使用数组四步走: 1、声明数组2、分配空间3、赋值4、处理数据,如何使用数组,int a;,a = new int5;,a 0 = 8;,a 0 = a0 * 10;,a,8,80,a0,12,数组的声明,int score1; /Java成绩 int score2 ; /C#成绩 String name; /学生姓名,声明数组: 告诉计算机数据类型是什么,1,数据类型 数组名 ;,数据类型 数组名 ;,13,数组初始化,score = new int30; avgAge = new
6、int6; name = new String30;,30,分配空间: 告诉计算机分配几个格子,数组属于引用数据类型,2,数据类型 数组名 = new 数据类型大小 ;,声明数组并分配空间,14,数组赋值,score0 = 89; score1 = 79; score2 = 76; ,赋值:向分配的格子里放数据,30,score0,score1,score2,89,79,76,太麻烦!能不能一起赋值?,3,15,数组赋值,方法1: 边声明边赋值方法2:动态地从键盘录入信息并赋值,解决,int score = 89, 79, 76;,int score = new int30; Scanner
7、input = new Scanner(System.in); for(int i = 0; i 30; i +)scorei = input.nextInt(); ,int score = new int 89, 79, 76;,16,使用数组求平均值2-1,int score = 60, 80, 90, 70, 85; double avg; avg = (score0 + score1 + score2 + score3 + score4)/5;,int score = 60, 80, 90, 70, 85; int sum = 0; double avg; for(int index
8、= 0; index score.length; index+)sum = sum + scoreindex; avg = sum / score.length;,成绩单,访问数组成员:使用“标识符下标”,访问成员,数组的length属性,对数据进行处理:计算5位学生的平均分,4,演示示例1:完整代码,17,使用数组求平均值2-2,回顾问题1:,令狐冲的班里有30位学生,使用动态录入并赋值的方式计算平均分,演示示例2:演示动态录入成绩并计算Avg,18,public class HelloAccp2public static void main(String args)int score =
9、new int ;score0 = 89;score1 = 63;System.out.println(score0); ,常见错误3-1,编译出错,没有写明数组的大小,19,public class HelloAccp3public static void main(String args)int score = new int2;score0 = 89;score1 = 63;score2 = 45;System.out.println(score2); ,常见错误3-2,编译出错,数组越界,20,常见错误3-3,public static void main(String args)in
10、t score = new int5;score = 60, 80, 90, 70, 85;int score2;score2 = 60, 80, 90, 70, 85; ,编译出错,创建数组并赋值的方式必须在一条语句中完成,21,public class HelloAccp4public static void main(String args)int score = new int3;score0 = 89;System.out.println(score1); ,int数组元素缺省值为0,0,输出结果,22,小结2,有一个数列:8,4,2,1,23,344,121)循环输出数列的值2)求
11、数列中所有数值的和3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数,演示运行效果,23,数组的优点是什么? 数组的3种声明方式是什么? 如何引用数组中的元素? 求数列的平均值、最大值以及排序的方法?,总结,24,2、从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分,求最大值3-1,打擂台,演示示例3:演示运行效果,擂台,25,求最大值3-1,根据打擂台的规则:,max = stu0 ; if (a1max )max=a1 ; if (a2max )max=a2 ; if (a3max )max=a3 ; ,使用循环 来解决,26,求最大值3-2,/计算成绩最大值max
12、= score0;for (int index = 1;index max) max = scoreindex;System.out.println(“本次考试的五位学生的最高分是: “ + max);,循环打擂,使用max存储擂主初始值:第一个元素为擂主,27,小结3,小明要去买一部手机,他询问了4家店的价格,分别是2800元,2900元,2750元和3100元,显示输出最低价,int min = list0; /存储最小值 for ( int i = 0; i listi ) min = listi; /交换 ,28,排序2-1,使用java.util.Arrays类 java.util包
13、提供了许多存储数据的结构和有用的方法 Arrays类提供许多方法操纵数组,例如:排序,查询 Arrays类的sort()方法: 对数组进行升序排列,3、循环录入5位学员成绩,进行升序排列后输出结果,Arrays.sort(数组名);,演示示例4:完整代码演示排序效果,29,排序2-2,import java.util.*; /导入包int score = new int5;Scanner input = new Scanner(System.in); System.out.println(“请输入5位学员的成绩:“);for(int i = 0; i 5; i+)scorei = input.
14、nextInt(); /依次录入5位学员的成绩Arrays.sort(score); /排序for(int index = 0; index score.length; index+)System.out.println(scoreindex); /输出结果,数组中的元素被重新排列,完整代码演示,循环录入学生成绩并存储在数组中,循环输出数组中的信息,30,小结4,有一列乱序的字符,a,c,u,b,e,p,f,z,排序并按照英文字母表的逆序输出,char list = a,c,u,b,e,p,f,z; Arrays.sort(list); for (int i = list.length - 1; i = 0; i- ) System.out.println(listi); ,31,数组的优点是什么? 数组的3种声明方式是什么? 如何引用数组中的元素? 求数列的平均值、最大值以及排序的方法?,总结,