2018-11-26流程控制语句

学习目标

image.png

if语句

if条件语句主要用于告知程序当某一个条件成立时,须执行满足该条件的相关语句。
if语句 (单一条件)
-如果表达式值为true,则执行花括号的内容后,再执行后面的语句
-如果表达的值为false,则直接执行后面的语句

if(判断表达式){
  执行语句块
}
![image.png](https://upload-images.jianshu.io/upload_images/14622085-b2c61a0321c8be4e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

if后的小括号内的表达式的值必须是布尔类型只能是真或者假条件为真时执行大括号内的语句块
大括号内的语句要有缩进保证代码规范。

public class Demo {
public static void main(String[] args) {
int i = 0;
if(i>0){
System.out.println(i);
    }
  }
}

没有输出 因为并没有满足条件所以不执行大括号内的语句。

public class Demo {
public static void main(String[] args) {
int i = 0;
int a = i++;
if(i>=0){
a++;
System.out.println(i);
     }
    System.out.println(a);
  }
}
输出结果1   1。
if...else语句(二选一),语法为:
if(表达式){
执行语句块1
}else{
执行语句块2
}
####if...else语句作用:针对某种条件有选择地做出处理*
如果布尔表达式的值为true,则执行语句1
如果布尔表达式的值为false,则执行语句2
*如果有多个条件,可以用逻辑运算符连接成为表达式*

int x = 2;
if(x<2){
x++;
}else{
x--;
}
System.out.println("x="+x);

结果为:x = 1;
![image.png](https://upload-images.jianshu.io/upload_images/14622085-5c8d5e576830cf71.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

####if...else if条件语句

if (表达式1){
执行语句块1
}else if(表达式2){
执行语句块2
}

![image.png](https://upload-images.jianshu.io/upload_images/14622085-8f2ce4224c344637.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
int x = 88;
if(x<60){
 System.out.println(“成绩不合格”);
}
else if(x>=85){
System.out.println(“成绩优秀”);
}
else{
System.out.println(“成级良好”);
}
输出结果“成绩优秀”。
####变量作用域
变量只能在初始化之后使用。
在作用域里定义的变量,只能在该作用域中使用。
-使用一对大括号包含的语句范围,称为作用域。 
-在作用域中,变量名不能重复定义。
![image.png](https://upload-images.jianshu.io/upload_images/14622085-bfc34c331a0c3500.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####switch条件语句
#####switch语法格式

switch (表达式){
case 取值1:
语句块1 …
case 取值n:
语句块n
default: 语句块n+1
}
示例:
int n = 2;
int result;
switch(n+1){
case 1:
System.out.println(“Block A”);
result = n;
break;
case 2:
System.out.println(“Block B”);
result = nn; break;
case 3:
System.out.println(“Block C”);
result = n
n*n;
break;
default:
result = 0;
}
System.out.println(“result=“+result);
switch语句格式特殊记忆:case不加缩进,case的语句有缩进。

#####switch语句特点: 
>表达式的值只可以接受int、byte、char、short 、String型,不接受其他类型的值

**表达式的值接受String类型只在JDK7及以后版本有效**

>switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能跟变量。

>不允许有重复的case取值

>switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置,开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,直到碰到break关键字或者结束switch语句的大括号为止

**case之间与default没有顺序。先判断所有的case,没有匹配的case执行default。因此一般将default放在case后面。**

>switch语句停止的条件是遇到了break关键字或者结束switch语句的大括号。
####字符串类型
英文双引号中的内容表示字符串 "  "。
字符串类型使用String表示。
####控制台输入
可以通过控制台得到用户的输入(程序会等待用户输入后再继续执行): 
使用控制台输入,需要加入代码
import java.util.Scanner; 
该代码必须在package下一行 
如果没有package声明,可以在第一行 
new Scanner(System.in).nextInt():得到用户输入的整数 
new Scanner(System.in).nextDouble():得到用户输入的浮点数 
new Scanner(System.in).next():得到用户输入的字符串,空格结束
new Scanner(System.in).nextLine():得到用户输入的字符串,换行结束

package com.neuedu.ch03;
import java.util.Scanner;
public class InputTest {
public static void main(String[] args) {
int a01 = new Scanner(System.in).nextInt();

     double b01 = newScanner(System.in).nextDouble();

String c01 = new Scanner(System.in).next();

String c02 = new

Scanner(System.in).nextLine();
}
}

#####产生随机数
随机数:在产生过程中是按照分布概率随机产生的,其结果是不可预测的。
伪随机数:计算机中的随机函数是按照一定算法模拟产生的,因此称为伪随机数。
*用随机数程序,需要加入代码*
import java.util. Random; 
该代码必须在package下一行 
如果没有package声明,可以在第一行 
多行import可以依次编写,import代码没有必须顺序
#####产生随机数代码:new Random().nextInt(正整数);
括号中的数字代表产生随机数的范围
例如:如果数字为10,产生0到9之间的随机整数。
package com.neuedu.ch03;
import java.util.Random;
public class RandomTest {
        public static void main(String[] args) {
            int a = new Random().nextInt(10);
            System.out.println(a);
      }
}
###循环语句
顺序结构和流程控制的程序语句只能被执行一次。如果您想要同样的操作执行多次,就需要使用循环结构
Java中循环语句:
 while语句 do...while语句
 for语句 
foreach语句

while循环:
while (条件表达式){
执行语句块
}
int x=1;
while(x<3){
System.out.println("x="+x);
x++;
}

![image.png](https://upload-images.jianshu.io/upload_images/14622085-d016539aa0aecc1d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####代码调试
使用STS,可以让代码一行一行的执行,观察每行代码变量值的改变 
设置断点 
启动调试运行 
单步执行 
观察变量
![image.png](https://upload-images.jianshu.io/upload_images/14622085-92445ac6f2f243ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://upload-images.jianshu.io/upload_images/14622085-de464b8619fc2012.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://upload-images.jianshu.io/upload_images/14622085-acb2d0a7a45c0fb7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://upload-images.jianshu.io/upload_images/14622085-c001561b61695d44.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####do…while循环语句

do{
执行语句块
} while(条件表达式 );
int x=3;
do{
System.out.println("x="+x);
x++;
} while(x<3);


image.png

for循环语句

语法格式

for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句块 }
for(int x=1;x<3;x++){
        System.out.println("x="+x);
}
image.png

流程控制进阶

-流程控制嵌套使用
流程控制嵌套使用语法
流程控制嵌套使用注意事项
-死循环
while实现
for实现
do...while实现
-流程中断
break
continue

在Java语言中,流程控制语句可以嵌套使用

嵌套循环语句
嵌套条件语句 循环、
条件语句嵌套使用
例如
意事项: 代码缩进格式 变量声明周期
public class Multiplicaiton {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++){
for(int n = 1; n <= i; n++){
System.out.print(n+" x "+i+" = "+n*i+" ");
}
System.out.println();
}
}
}

注意事项:
代码缩进格式
变量声明周期
####死循环语句
死循环:靠自身控制无法终止的程序称为“死循环”
思考:死循环是错误吗?

while实现
while(true){
System.out.println("x="+x);
}
for实现
for(int x=1;;x++){
System.out.println("x="+x);
}
for(;;){
System.out.println(“你好");
}
do...while实现
do{
System.out.println("x="+x);
} while(true);

####循环的中断
在使用循环语句时,只有循环条件表达式的值为false时,才能结束循环。有时,我们想提前中断循环,要实现这一点,只需要在循环语句块中添加break或continue语句:

>break关键字:break 语句用于终止最近的封闭循环或它所在的 switch 语句。控制传递给终止语句后面的语句。

>continue关键字:语句将控制权传递给它所在的封闭迭代语句的下一次迭代。(跳出本循环,执行下一次循环)

break关键字: 
break语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环。 
“break;”语句:可以出现在while、do…while、for、switch语句体中。 
“break label”语句 :可以出现在任何语句体中。
![image.png](https://upload-images.jianshu.io/upload_images/14622085-a4e8bd6d0360da98.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####break label中断
标签名:循环体 {
 break 标签名; 
}
标签名: 
任意标识符
循环体: 
while
do…while 
for
break 标签名: 
循环体标签名和break标签名必须对应一致。
![image.png](https://upload-images.jianshu.io/upload_images/14622085-ef34a03e3f7ab0fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####continue中断
continue关键字
continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下未执行的循环,开始下一次循环过程 
continue语句:只能出现在循环语句while、do…while、for中
for(int i=1;i<50;i++) {
        if((i%2)==0){
                continue;
         }
         System.out.print(i+" ");
}
####continue label中断
语法格式同break
示例:
![image.png](https://upload-images.jianshu.io/upload_images/14622085-0ff3c90ba910a1b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,320评论 0 9
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,287评论 0 19
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,869评论 0 2
  • 现在想来,那天的夕阳真是美得不像话。 这么多年了,虽然我尽量的逃离过去的圈子,尽量的去避免有些交集,但毕竟是高中同...
    夏了夏天空了城阅读 858评论 0 4