JavaSE入门级-第三课-控制流程语句
程序流程图
面向逻辑思想指的是使用量和语句 来描述编程问题,其实编程问题也可以通过图形来表达,使用程序流程图来表达程序问题:
流程图的画法:
- 圆角矩形表示事情的 开始 与 结束
- 矩形表示事件,和普通过程
- 菱形表示判断环节
- 平行四边形表示输入 或者 输出
- 箭头表示流程的工作方向
流程图实例:
l 练习:用户输出两个不同数输出较大的那个
代码块
使用 { }把一些语句扩起来表示一个整体,例:
{
int i = 5;
i++;
}
注意:代码块在实际编码中很常见,用于一些特殊语句的语法,表明一个整体关系,代码块中的变量是私有的,如果出了这个块就失效,称为局部变量
条件语句
条件语句,顾名思义,执行语句是有条件的,用来解决流程图中的分支判断问题
if语句
l if语句语法如下:
if(布尔值表达式){ // 语句块 }
布尔值表达式为true时执行语句块内容否则不执行,另外语句块如果只有一条语句可以不写大括号(但是非常不建议大家这么做)
代码实例:
// 你去买个西瓜,如果看到包子就买两个
int watermelon = 1;
int baozi = 0;
boolean saleWatermelon = true;
if(saleWatermelon){
watermelon = 2;
}
System.out.println(“我买了”+ watermelon +”西瓜,买了”+baozi+”包子”);
l 条件语句if对应的流程图

l 双向条件语句 if - else,语法如下:
if(布尔值表达式){ // 语句块1 }else { // 语句块2 }
布尔值表达式为true时执行语句块1内容否则执行语句块2
实例代码如下:
// 你今天乖乖在家里做作业如果敢出去你就不要回来了
boolean goOutside = false;
if(goOutside) {
System.out.println("我今天怕是要住在外面了");
}else {
System.out.println("我今天在家里做作业");
}
l 双向条件语句流程图

l if语句嵌套
// 如果做梦就可以出去玩了
boolean dream = true;
if(goOutside) {
System.out.println("我今天怕是要住在外面了");
}else {
if(dream) {
System.out.println("梦里面,空气开始冒烟,玩的很高兴");
}else {
System.out.println("我今天在家里做作业");
}
}
l 练习:如果我有女朋友我就陪她逛街,如果没有就好好写代码
if - else if- else 语句
多分支的条件判断语句,适合处理区间问题,例如:
根据用户输入的成绩自动输出ABCD四个等级
l 多分支条件语句的流程

l 练习:输入 积分输出对应的段位
switch语句
switch语句是等值匹配多分支的一种语句,它可以被if-else if-else语句代替,例:
// 成绩如果是A 表示90分以上
if(score == ‘B’){
System.out.println(“成绩是80分以上,90分以下”);
}else if(score == ‘C’){
System.out.println(“成绩是60分以上,70分以下”);
}else{
System.out.println(“成绩太差”);
}
// 上文中的语句可以使用switch语句代替

代码解析:
l score表示被比较的变量,变量的允许类型有,byte short int char String 枚举,特别注意,long类型不能用于swtich语句
l case 表示每一个等值匹配的数据量
l break 表示跳出整个语句块,如果没有则只需要有一个匹配下文的case都会被执行
l default 表示如果所有的case都未能匹配才会执行,一般作为一个缺省项
补充:switch的值类型在jdk1.5支持枚举 jdk1.6支持String,浮点型,布尔型不能作为表达式类型
练习
l 使用条件语句,完成输入3个不同的数字,输出最大的那个
l 输入一个年份,判断是不是闰年
l 输入年份和月份,输出该月有多少天
while语句
java编程中时常涉及到一类问题,例如,你惹你女朋友生气了,她说你必须道歉100次我才能原谅你,代码实现如下:
// 道歉100次
System.out.println(“对不起1次”);
System.out.println(“对不起2次”);
System.out.println(“对不起3次”);
……
System.out.println(“对不起100次”);
// 很显然这是一个很愚蠢的做法,正确的做法应该使用循环语句while
int i = 1;
while(i<100){
System.out.println(“对不起”+i+”次”);
i++;
}
l 循环语句while解析:
while语句用来解决循环问题,它的整体结构,关键字while,括号里面的内容为布尔值的表达式,如果这个表达式为ture则执行语句块的内容,知道表达式的值为fasle位置
(特别注意:while语句中理论上必须要包含一个增量语句,否则会构成死循环)
l while语句流程图

练习
l 使用while语句,求和 1+2+3+4+5+6+…+100
do-while语句
do-while 语句和while逻辑类似,区别在于while语句先判断在执行语句块,do-while语句先执行在进行判断,例:
int i = 1:
int sum = 0;
do{
sum+=i; i++;
}while(i<=100);
System.out.println(“1到100的累加和是:”+sum);
练习
l 使用while 或者do-while 语句,完成求100以内的基数和
l 使用while或者do-while语句,完成求100以内5的倍数和
for语句
for循环是循环的一种表达方式,也是最长使用的语句之一,举例如下:
// 完成100以内的基数和
int sum = 0;
for(int i=0;i<=100;i++){
sum+=I;
}
for循环语句比较简单,语法解析如下:
for循环语法,for(表达式1;表达式2;表达式3){
语句块
}
l 表达式1只会运行一次,也就是初始化
l 表达式2循环条件判断,值为true时会进入语句块
l 表达式3 循环语句结束后执行,改变标量的值,判断是否继续循环
(注意:表达式不一定要都出现,有可能缺省几个)
练习
l 使用for循环求1到100的累加和
关键字 break continue
在java中有两个关键字 break和continue
l break和循环搭配使用表示跳出循环,注意只能跳出本身,不能跳出外层
l continue 和循环搭配使用表示,结束本次循环,会再次进入循环
// 道歉99次的时候选择了放弃
while(i<100){
if(i==99){
break; // 表示跳出循环
}
System.out.println(“对不起我错了”);
}
// 求1到100的偶数和
for(int i=0;i<=100;i++){
if(i%2!=0){
continue;
}
sum += I;
}
死循环专业写法
l 写法1:while(true){ }
l 写法2:while(1==1){ }
l 写法3:for(;;){ }
练习
l 求1到100的数的合,要求跳过3的倍数和5的倍数
l 随机生成一个数,让用户不停的输入,提示用户猜大了或者猜小了,知道猜对为止
代码提示:int i = new java.util.Random().nextInt(100); // 获得100以内的随机数
l 完成随机抽取号数的程序
代码提示:Thread.sleep(1000); // 1000表示程序暂停1秒钟
for循环的嵌套
for循环嵌套对于初学者是一个比较困难的章节,希望大家挺住
我们看一个命题有4位同学参加跑圈接力赛,要求每一名同学跑完10圈以后下一名同学才能开始跑,试用for循环嵌套完成,例:
l 代码解析:
外层循环for是4位同学的跑圈接力事件
内层循环for是每位同学的跑圈事件
运行顺序,先执行外层循环,知道每次内层循环全部运行结束才能继续外层循环
算法问题(难)
问题1:打印 直角*
// 练习,使用 for 在控制台输出 以下图形
// *
// **
// ***
// ****
// *****

问题2:打印 等腰*
// *
// * *
// * * *
// * * * *
//* * * * *

问题3:打印 99 乘法表


问题4:1000以内的水仙花数

问题5:百钱买百鸡
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何

问题6:雉兔同笼
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何

问题7:小球下落
小球从100秒下落,每次弹回原来的一般 小球第10次落地时经过的路程是多少

问题8:猴子吃桃
猴子摘了很多桃子 第一天吃了一半多一个 第二天吃了剩下的一般多一个 每天都这么迟 第10天发现只剩下一个 它摘了几个

问题9:100以内素数和
求100以内所有的素数合,1不是素数

问题10:阶层求和
求阶层问题 1!+2!+3!+4!+5!+6!+7!


浙公网安备 33010602011771号