JavaSE入门级-第三课-控制流程语句

 

程序流程图

面向逻辑思想指的是使用量和语句 来描述编程问题,其实编程问题也可以通过图形来表达,使用程序流程图来表达程序问题:

流程图的画法:

  1. 圆角矩形表示事情的 开始 与 结束
  2. 矩形表示事件,和普通过程
  3. 菱形表示判断环节
  4. 平行四边形表示输入 或者 输出
  5. 箭头表示流程的工作方向

流程图实例:

 

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!

 

 

posted @ 2021-07-16 08:40  二娃千里眼  阅读(173)  评论(0)    收藏  举报