《JAVA循环、数组、字符串.ppt》由会员分享,可在线阅读,更多相关《JAVA循环、数组、字符串.ppt(69页珍藏版)》请在三一办公上搜索。
1、循环、数组、字符串,举例说明,循环结构用于解决哪些问题?循环结构中使用了哪些关键字?程序调试有哪些步骤?什么时候选用for循环结构?for循环结构的基本语法和执行顺序是什么?什么情况下使用数组?如何定义一个int数组?怎样引用一个数组中的元素?字符串有哪些常用方法?,预习检查,理解循环的含义会使用while循环结构会使用do-while循环结构会使用for循环结构会在程序中使用break、continue和return掌握数组的基本用法 会应用数组解决简单问题理解基本数据类型和引用数据类型字符串常用方法字符串与基本类型数据之间的转换,本章目标,指导计算100以内偶数之和,训练要点:while循
2、环结构程序调试需求说明:编程实现:计算100以内(包括100)的偶数之和观察每一次循环中变量值的变化实现思路:1、声明整型变量num和sum2、循环条件:num=1003、循环操作:累加求和,讲解需求说明,完成时间:20分钟,指导查询商品价格,训练要点:while循环结构程序调试需求说明:循环输入商品编号,显示对应的商品价格输入“n”结束循环 实现思路:1、声明变量2、循环体 3、循环条件 难点指导:循环体内使用switch,讲解需求说明,完成时间:25分钟,练习升级购物结算,需求说明:循环输入商品编号和购买数量当输入n时结账 结账时计算应付金额并找零,完成时间:25分钟,经过几天的学习,老师
3、给张浩一道测试题,让他先上机编写程序完成,然后老师检查是否合格。如果不合格,则继续编写。,do 循环操作while(循环条件);,while(循环条件)循环操作,while循环先判断,再执行不适合描述此故事,?,为什么需要do-while循环,5、如何用程序讲述下面的故事?,do 循环操作 while(循环条件);,先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出,什么是do-while循环,特点:先执行,再判断,分号不可少,while循环和do-while循环的区别语法不同执行次序不同 初始情况不满足循环条件时while循环一次都不会执行do-while循环不管任何情况都至少执行一
4、次,do 循环操作 while(循环条件);,while(循环条件)循环操作,先判断,再执行,先执行,再判断,比较while和do-while,小结3,使用do-while实现:输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一项,对照表中的条目不超过10条。转换关系:华氏温度=摄氏温度*9/5.0+32,提示:1、循环操作:计算摄氏温度,并输出对照条目2、循环条件:条目=10&摄氏温度=250,参考代码,练习升级菜单切换,需求说明:如果用户输入错误,可以重复输入直到输入正确,执行相应的操作后退出循环,完成时间:20分钟,什么是for循环,for(;);,条件为tr
5、ue,循环体被执行,for(int i=0;i 100;i+)System.out.println(好好学习!);,代码规范:格式对齐、代码的缩进,表达式1,表达式2,表达式3,循环操作,参数初始化,条件判断,更新循环变量,1,2,4,3,for循环的语法和执行顺序,指导计算顾客比例,训练要点:for循环结构需求说明:商场对顾客的年龄层次进行调查计算各层次的顾客比例实现思路:1、定义计数器变量2、利用循环录入顾客年龄难点指导:循环条件和循环体,讲解需求说明,完成时间:25分钟,int i=2;switch(i)case 1:System.out.println(星期一);break;case
6、2:System.out.println(星期二);break;/其他语句,遇到break,立即跳出switch语句,回顾break用于switch语句,描述4000米长跑比赛,for(int i=0;i10;i+)跑400米;,if(不能坚持)break;/退出比赛,第8圈,快累死了我要退出,为什么需要break语句,break:改变程序控制流用于do-while、while、for中时,可跳出循环而执行循环后面的语句,while()break;,跳出整个循环,break通常在循环中与条件语句一起使用,什么是break语句,如何使用break语句2-1,3、循环录入某学生5门课的成绩并计算平
7、均分,如果某分数录入为负,停止录入并提示录入错误循环录入成绩,判断录入正确性:录入错误,使用break语句立刻跳出循环;否则,累加求和,for(int i=0;i 5;i+)/循环5次录入5门课成绩 System.out.print(请输入第+(i+1)+门课的成绩:);score=input.nextInt();if(score 0)/输入负数 isNegative=true;break;sum=sum+score;/累加求和循环外的语句,对录入的分数进行判断,如果小于0,标记出错状态,并立即跳出整个for循环,如何使用break语句2-2,如何使用return语句,Int max(int
8、x,int y)If(xy)return x;elseif(xy)return y;else return 0;,18/35,返回值跳出本函数,执行调用函数之后的语句,提示1、使用循环进行累加,从1到102、判断累加值是否大于203、如果大于20,则跳出循环,并打印当前值,小结2,110之间的整数相加,得到累加值大于20的当前数,参考代码,1、通过循环,获得分数大于等于80分的学生人数num2、判断:如果成绩80,不执行num+,直接进入下一次循环,为什么需要continue语句,4、循环录入Java课的学生成绩,统计分数大于等于80分的学生比例,continue:只能用在循环里continu
9、e 作用:跳过循环体中剩余的语句而执行下一次循环,while()continue;,继续下一次循环,通常与条件语句一起使用,加速循环,for(int i=0;i10;i+)跑400米;if(!口渴)continue;/不喝水,继续跑 接过水壶,喝水;,示例,什么是continue语句,for(int i=0;i total;i+)System.out.print(请输入第+(i+1)+位学生的成绩:);score=input.nextInt();if(score 80)continue;num+;System.out.println(80分以上的学生人数是:+num);double rate=
10、(double)num/total*100;System.out.println(80分以上的学生所占的比例为:+rate+%);,对录入的分数进行判断,如果小于80,跳出本次循环,执行下一次循环,如何使用continue语句,使用场合break可用于switch结构和循环结构中continue只能用于循环结构中return用于方法中作用(循环结构中)break语句终止某个循环,程序跳转到循环块外的下一条语句。continue跳出本次循环,进入下一次循环 退出当前方法,返回调用该方法语句处,执行紧跟语句,对比break、continue和return,提示1、使用循环进行累加,循环的范围是从1
11、至102、判断当前数是否为偶数3、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加,小结3,求110之间的所有偶数和,参考代码,指导循环录入会员信息,训练要点:for循环结构continue语句需求说明:循环录入3位会员的信息会员号合法,显示录入信息;否则显示录入失败实现思路:1、循环录入3位会员信息。2、会员号无效,利用continue 实现程序跳转难点指导:continue的使用,讲解需求说明,完成时间:25分钟,练习验证用户登录信息,需求说明:用户登录验证。验证次数最多3次,完成时间:20分钟,到目前为止所学的循环结构有哪些?,循环结构总结2-1,无论哪一种循环结构,都有4个必不可少
12、的部分:初始部分、循环条件、循环体、迭代部分,需要多次重复执行一个或多个任务的问题考虑使用循环来解决,循环结构总结2-2,区别1:语法区别2:执行顺序 while循环:先判断,再执行do-while循环:先执行,再判断for循环:先判断,再执行区别3:适用情况循环次数确定的情况,通常选用for循环循环次数不确定的情况,通常选用while和do-while循环,总结,for循环结构如何执行?在循环中使用什么方式跳出或终止循环?break与continue之间的差别是什么?Return的用法,为什么需要数组2-1,int stu1=95;int stu2=89;int stu3=79;int st
13、u4=64;int stu5=76;int stu6=88;avg=(stu1+stu2+stu3+stu4+stu5+stu30)/30,30个变量太繁琐,1、Java考试结束后,老师给张浩分配了一项任务,让他计算全班(30人)的平均分,数组,为什么需要数组2-2,列表中的内容是否可以按照如右图所示的方式来存储呢?,可以,这就是数组!,生活案例:购物列表,数组是一个变量,存储相同数据类型的一组数据,什么是数组3-1,声明一个变量就是在内存空间划出一块合适的空间声明一个数组就是在内存空间划出一串连续的空间,什么是数组3-2,数组的结构和基本要素标识符:数组的名称,用于区分不同的数组数组元素:向
14、数组中存放的数据元素下标:对数组元素进行编号元素类型:数组元素的数据类型,什么是数组3-3,数组只有一个名称,即标识符 元素下标标明了元素在数组中的位置,从0开始数组中的每个元素都可以通过下标来访问 数组长度固定不变,避免数组越界,使用数组四步走:1、声明数组2、分配空间3、赋值4、处理数据,int a;,a=new int5;,a 0=8;,a 0=a0*10;,a,8,80,a0,如何使用数组,int score1;/Java成绩int score2;/C#成绩String name;/学生姓名,声明数组:告诉计算机数据类型是什么,1,数据类型 数组名;,数据类型 数组名;,声明数组,声明
15、数组时不规定数组长度,score=new int30;avgAge=new int6;name=new String30;,30,分配空间:告诉计算机分配几个连续的空间,2,数据类型 数组名=new 数据类型大小;,声明数组并分配空间,分配空间,score0=89;score1=79;score2=76;,赋值:向分配的格子里放数据,30,score0,score1,score2,89,79,76,太麻烦!能不能一起赋值?,3,数组赋值,方法1:边声明边赋值方法2:动态地从键盘录入信息并赋值,解决,int score=89,79,76;,Scanner input=new Scanner(Sy
16、stem.in);for(int i=0;i 30;i+)scorei=input.nextInt();,int score=new int 89,79,76;,数组赋值,不能指定数组长度,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 i=0;i score.length;i+)sum=sum+scorei;avg=sum/score.length;,成绩单,访问数组成员:使
17、用“标识符下标”,访问成员,数组的length属性,对数据进行处理:计算5位学生的平均分,4,处理数据,小结2,使用数组的步骤是什么?有一个数列:8,4,2,1,23,344,12循环输出数列的值求数列中所有数值的和猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数,参考代码1,参考代码2,参考代码3,指导显示商品名称,训练要点:数组的使用需求说明:在控制台显示5件特价商品名称实现思路:1、创建数组存储商品名称2、遍历数组输出商品名称,讲解需求说明,完成时间:10分钟,练习购物金额结算,需求说明:以表格的形式输出5笔购物金额及总金额,完成时间:25分钟,使用java.util.Arra
18、ys类java.util包提供了许多工具类Arrays类提供操作数组的方法,例排序、查询Arrays类的sort()方法:对数组进行升序排列,Arrays.sort(数组名);,数组排序2-1,2、循环录入5位学员成绩,进行升序排列后输出结果,import java.util.*;/导入包 int scores=new int5;/成绩数组Scanner input=new Scanner(System.in);System.out.println(请输入5位学员的成绩:);for(int i=0;i scores.length;i+)scoresi=input.nextInt();Array
19、s.sort(scores);System.out.print(学员成绩按升序排列:);for(int i=0;i scores.length;i+)System.out.print(scoresi+);,数组中的元素被重新排列,循环录入学生成绩并存储在数组中,循环输出数组中的信息,数组排序2-2,练习字符逆序输出,需求说明:将 一组乱序的字符进行排序进行升序和逆序输出,完成时间:15分钟,打擂台,擂台,求最大值3-1,3、从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分,根据打擂台的规则:,max=stu0;if(a1max)max=a1;if(a2max)max=a2;if(a3
20、max)max=a3;,使用循环来解决,求最大值3-2,/计算成绩最大max=scores0;for(int i=1;i max)max=scoresi;System.out.println(考试成绩最高分为:+max);,循环打擂,使用max存储擂主初始值:第一个元素为擂主,求最大值3-3,练习求最低价格,需求说明:求出4家店的最低手机价格,完成时间:15分钟,基本数据类型的深入理解2-1,4、张浩和李明去年身高都是170cm,今年李明长到了180cm,张浩没有变化,输出去年和今年两人身高定义两个变量保存身高修改变量的值输出变量的值,基本数据类型的深入理解2-2,int heightZhan
21、g=170;int heightLi=heightZhang;System.out.println(去年-张浩的身高是:+heightZhang+,李明的身高是:+heightLi);heightLi=180;System.out.println(今年-张浩的身高是:+heightZhang+,李明的身高是:+heightLi);,heightZhang,170,170,heightLi,180,不同的变量会分配不同的存储空间,改变一个变量值不会影响另一个变量值,引用数据类型的深入理解3-1,5、张浩和李明去年身高与体重均为170cm和60kg,李明今年身高和体重变为180cm和70kg,张浩
22、无变化。输出两人的身高和体重采用和上一个示例相同的思路看是否可行,引用数据类型的深入理解3-2,int infoZhang=new int 170,60;int infoLi=infoZhang;infoLi0=180;/今年李明的身高变为180infoLi1=70;/今年李明的体重变为70,infoZhang,0 x2a486c,0 x2a486c,infoLi,对引用数据类型,赋值是把原对象的引用传递给另一个引用,两个引用指向同一块内存空间,引用数据类型的深入理解3-3,int infoZhang=new int 170,60;int infoLi=new int2;for(int i=0
23、;i infoZhang.length;i+)infoLii=infoZhangi;infoLi0=180;/今年李明的身高变为180infoLi1=70;/今年李明的体重变为70,infoZhang,0 x2a486c,0 x2a679d,infoLi,数组元素有默认值,练习更新会员积分,需求说明:将原有积分进行备份,然后赠送每位会员500积分,编写程序输出积分情况,完成时间:20分钟,总结,数组有哪些特点?使用数组的四个步骤?如何实现数组的排序?基本数据类型和引用数据类型在内存分配上有什么不同?,无处不在的字符串,生活中的字符串使用String对象存储字符串String类位于java.la
24、ng包中,具有丰富的方法计算字符串的长度连接字符串比较字符串提取字符串,频繁使用的字符串,“标准决定水准”,“态度决定高度”,“教育改变生活”,String s=“胸怀决定格局;,String s=new String(“胸怀决定格局);,字符串长度,计算字符串长度,字符串,长度,调用length()方法获得,返回字符串中的字符数,调用方法:,字符串标识符.length();,方法原型:,public int length(),字符串比较,equals()方法比较原理输入的“Java”和“java”代表同一课程,如何解决?使用equalsIgnoreCase()方法结合toUpperCase(
25、)或toLowerCase(),字符串 1,字符串 2,检查组成字符串内容的字符是否完全一致,字符串比较,使用equalsIgnoreCase()方法解决,比较时忽略大小写形式,if(favCourse1.equalsIgnoreCase(favCourse2)System.out.println(最喜欢的课程相同);else System.out.println(最喜欢的课程不相同);,字符串比较,结合toUpperCase()方法解决,Java,使用 toUpperCase()方法,JAVA,Java,使用 toLowerCase()方法,java,if(favCourse1.toUppe
26、rCase().equals(favCourse2.toUpperCase()System.out.println(最喜欢的课程相同);else System.out.println(最喜欢的课程不相同);,字符串连接,方法1:使用“+”方法2:使用String类的concat()方法,你好,张三!,String s=new String(你好,);String name=new String(张三!);String sentence=s.concat(name);System.out.println(sentence);,输出结果,A.concat(B):B字符串将被连接到A字符串后面,字符串常用提取方法,常用提取方法举例,返回出现第一个匹配的位置,如果没有找到字符或字符串,则返回-1,0 1 2 3,位置,字符串常用提取方法,beginindex:字符串的位置从0开始算;endindex:字符串的位置从1开始算,基本类型值与字符串,基本类型值与字符串,对象的字符串表示,Object类有方法:String toString();作用:一个对象通过调用该方法可以获得对象的字符串表示。,69/,思维总结,