黑马程序员技术交流社区
标题: 【济南中心】JavaEE基础班新课程day03:选择和循环 [打印本页]
作者: 小鲁哥哥 时间: 2017-3-4 16:18
标题: 【济南中心】JavaEE基础班新课程day03:选择和循环
本帖最后由 小鲁哥哥 于 2017-3-4 16:44 编辑
【济南中心】JavaEE基础班新课程day03:选择和循环
大家学完前两天的课程什么感觉?是感觉收获了很多,还是感觉哪里没解释清楚?请留言评论给我哦。{:8_468:}
大家对于编程有了基本的认识,变量,常量,数据类型,运算符,键盘录入等等知识点你是否清楚了呢?盖大楼可是要先打好地基的
每天的知识都要掌握。
来检查一下吧!{:8_472:}
[Java] 纯文本查看 复制代码
byte b1 = 3, b2 = 4,b;
b=b1+b2;
b=3+4;
这三行代码哪行会报错?
答案:
b=b1+b2;会报错
因为此运算为byte类型的运算,低于int类型的运算时会自动提升为int类型。
把 int类型的值赋值给byte会损失精度,需要强制类型转换。
b=(byte)b1+b2;
怎么样?是不是学会了呢?{:8_497:}
再说一下同学常见得问题:
有的同学软件遇到了问题,eclipse突然打不开了?如下图:
这样是说创建java虚拟机失败,原因是你的内存不够用了,因为创建虚拟机需要分配给他内存空间。
解决办法是打开你的eclipse安装位置,找到eclipse.ini文件,右键-编辑
打开以后看到如下的一些文字:
找到里面的256,1024这些数字把它改为128就可以啦,保存后再打开eclipse是不是ok了?{:8_492:}
好,接下来我们进入第三天的学习,看看今天的主要学习目标吧!
【学习目标】理解、了解、应用、记忆
通过今天的学习,希望大家能够:(解释的时候说出二级目标的掌握程度)
1. 【应用】能够独立使用选择流程语句完成指定操作
a. 【理解】阐述if语句的的第一种第二种及第三种书写格式及执行流程
b. 【应用】独立编写代码,使用if语句完成获取两个数较大值的练习
c. 【应用】独立编写代码,使用if语句完成判断学生等级练习
d. 【理解】阐述switch语句的的格式及执行流程
e. 【应用】独立编写代码,使用switch语句完成根据数字输出对应星期的练习
2. 【理解】能够独立使用循环控制语句完成指定操作
a. 【理解】阐述使用for循环的基本格式及执行流程
b. 【应用】独立编写代码,使用for循环完成获取1-5之间数据之和
c. 【应用】独立编写代码,使用for循环完成获取1-100之间的偶数和
d. 【应用】独立编写代码,使用for循环完成控制台打印100-999之间水仙花数,并获取水仙花个数练习
e. 【理解】阐述while循环的基本格式及执行流程
f. 【应用】独立编写代码,使用while循环完成1-100之间数据之和
g. 【理解】阐述do…while循环的格式及执行流程
h. 【理解】阐述for、while、do…while三种循环的区别
3. 【应用】能够灵活使用控制循环语句
a. 【理解】阐述break的作用及使用场景
【理解】阐述continue的作用及使用场景
1 选择流程控制语句
1. 顺序结构概述是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
[Java] 纯文本查看 复制代码
/*
* 顺序结构:从上往下,依次执行
*/
public class OrderDemo {
public static void main(String[] args) {
System.out.println("开始");
System.out.println("语句A");
System.out.println("语句B");
System.out.println("语句C");
System.out.println("结束");
}
}
i. If语句格式1及执行流程if语句第一种格式:
if(关系表达式) {
语句体
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
[Java] 纯文本查看 复制代码
public class IfDemo {
public static void main(String[] args) {
System.out.println("开始");
// 定义两个变量
int a = 10;
int b = 20;
if (a == b) {
System.out.println("a等于b");
}
int c = 10;
if (a == c) {
System.out.println("a等于c");
}
System.out.println("结束");
}
}
i. If语句格式2及执行流程
if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
[Java] 纯文本查看 复制代码
public class IfDemo2 {
public static void main(String[] args) {
System.out.println("开始");
// 判断给定的数据是奇数还是偶数
// 定义变量
int a = 100;
// 给a重新赋值
a = 99;
if (a % 2 == 0) {
System.out.println("a是偶数");
} else {
System.out.println("a是奇数");
}
System.out.println("结束");
}
}
i. If语句格式3及执行流程
if语句第三种格式:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1
[Java] 纯文本查看 复制代码
int x = 5;
int y = 0;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 3) {
y = 2 * x;
} else if (x <= -1) {
y = 2 * x - 1;
}
System.out.println("y的值是:"+y);
来练习一下吧
if语句实现判断学生等级:键盘录入学生考试成绩,请根据成绩判断该学生属于哪个级别
* 90-100 优秀
* 80-90 好
* 70-80 良
* 60-70 及格
* 60以下 不及格
自己先思考再看答案吧!
答案:
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入学生的考试成绩:");
int score = sc.nextInt();
if(score<0 || score>100){
System.out.println("你的成绩是错误的");
}else if(score>=90 && score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=80 && score<90){
System.out.println("你的成绩属于好");
}else if(score>=70 && score<80){
System.out.println("你的成绩属于良");
}else if(score>=60 && score<70){
System.out.println("你的成绩属于及格");
}else {
System.out.println("你的成绩属于不及格");
}
}
switch语句的格式及执行流程
switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行顺序:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
看这个代码:
[Java] 纯文本查看 复制代码
public class SwitchDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入一个数字(1-7):");
int weekday = sc.nextInt();
//switch语句实现选择
switch(weekday) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的数字有误");
break;
}
}
}
你能看懂这个代码的作用吗?如果你不确定的话可以运行一下试试哦~这里我就卖个关子,动动手吧!
2 循环流程控制语句
接下来是循环了!循环?单曲循环,就是一遍又一遍啊,计算机对于简单的重复命令执行起来是非常快的,利用这点学会了循环我们可以利用计算机做很多费时的计算工作。来看看吧!
a. for循环语句格式:
循环体语句;
}
如果我让你从0数到1万你需要几分钟?估计要数很久了,那交给计算机的话你猜需要多久?
你可以用for循环打印0到1万的数字,或者浪漫一点输出1万次 i love u{:8_503:}
怎么用代码实现?自己试试!
[Java] 纯文本查看 复制代码
for(int x=0; x<10000; x++) {
System.out.println("i love u");
}
现在我们把for和if结合起来做个小练习:
输出3位数中的所有水仙花数,并统计总个数。
什么是水仙花数呢?
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。53= 1*1*1 + 5*5*5 + 3*3*3
这个题我就不给代码啦,自己试试吧!
b: while循环 基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
和刚才for有点相似,在一定程度上可以替换使用。现在让我们用while输出10次 小鲁哥哥你好棒棒吧!{:8_492:}
[Java] 纯文本查看 复制代码
while(x<=10) {
System.out.println("小鲁哥哥你好棒棒!");
x++;
}
哈哈,很棒,接下来还有个do…while和控制语句,学完就收工啦~加油~
基本格式
do {
循环体语句;
}while((判断条件语句);
扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
c. 三种循环的区别虽然可以完成同样的功能,但是还是有小区别:
do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体
for循环语句和while循环语句的小区别:
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
3 控制跳转语句
a) 控制跳转语句break
break的使用场景:
在选择结构switch语句中
在循环语句中
离开使用场景的存在是没有意义的
break的作用:
跳出单层循环
[Java] 纯文本查看 复制代码
public class BreakDemo {
public static void main(String[] args) {
//break;
for(int x=1; x<=10; x++) {
if(x == 3) {
break;
}
System.out.println("HelloWorld");
}
}
}
b) 控制跳转语句continue
在循环语句中
离开使用场景的存在是没有意义的
continue的作用:
单层循环对比break,然后总结两个的区别
break 退出当前循环
continue 退出本次循环继续下次循环
[Java] 纯文本查看 复制代码
public class ContinueDemo {
public static void main(String[] args) {
//continue;
for(int x=1; x<=10; x++) {
if(x == 3) {
//break;
continue;
}
System.out.println("HelloWorld");
}
}
}
大家好好加油,有什么问题和意见就评论留言吧!互相加油鼓励也可以~
作者: zhangkaitong 时间: 2017-3-6 23:46
谢谢分享!!!
作者: 橘子哥 时间: 2017-3-7 10:11
感谢老师分享!
作者: 雪飞舞舞 时间: 2017-3-11 22:45
学习了
作者: ningwode 时间: 2017-3-12 12:07
感谢分享,老师辛苦了!
作者: 冯达其 时间: 2017-3-13 09:41
谢谢分享!
作者: 一直前行 时间: 2017-4-18 13:05
感谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |