2.6 程序流程控制

一、判断结构

if语句 三种格式:

  1. if(条件表达式) //条件表达式为true或false
    {
    执行语句;//只有条件表达式为true,才执行大括号里面的语句
    }
int x = 1;
if(x==1)
{
    System.out.println("yes");
}
  1. if(条件表达式)
    {
    执行语句;
    }
    else
    {
    执行语句;
    }
int x = 3;
if(x>3)
{
    System.out.println("yes");
}
else
{
    System.out.println("NO");
}

if else结果简写格式:变量 = (条件表达式)?表达式1:表达式2
三元运算符:
优点:可以简化if else代码
弊端:因为是运算符,所以运算完必须要有一个结果

int a = 9,b;
//b = (a>1)?System.out.println("ABC"):200;//不可以写成这样(无返回值,只是直接打印ABC,但if else就可以直接写输出语句)
b = (a>1)?100:200;//正确写法

3.只要有一个满足,程序就结束
if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}

int = 3;
if(x>1)//结果只输出a
{
System.out.println("a");
}
else if(x>2)
{
System.out.println("b");
}
else
{
System.out.println("c");
}

//需求:根据用户定义的需求不同,打印对应的星期英文

int x = 3;
if(x==1)
{
    System.out.print("MONDAY");
}
else if(x==3)
{
    System.out.print("Wednesday");
}
else
{
    System.out.print("星期不存在");
}

/需求:根据输入的月份不同,显示春天、夏天、秋天、冬天。
思路:春季:3月-5月,夏季:6月-8月,秋季:9月-11月,冬季:12月-2月

        int x =12;

        if(x<1||x>12)
        {
            System.out.print("输入的季节不存在");
        }

        else if(x>=3 && x<=5)
        {
            System.out.print("春季");
        }
        else if(x>=6 && x<=8)
        {
            System.out.print("夏季");
        }
        else if(x>=9 && x<=11)
        {
            System.out.print("秋季");
        }
        else
        {
            System.out.print("冬季");
        }

二、选择结构

表达式只取byte、short、int、char类型
只有当遇到{}或者break才停止执行
swich(表达式)
{
case 取值1:
执行语句:
break;
case 取值2:
执行语句:
break;
........
default:
执行语句:
break;
}
1.switch语句选择的类型只有四种:byte,short,int ,char。
2.case之间与default没有顺序。先执行第一个case,没有匹配的case执 行 default。
3.结束switch语句的两种情况:遇到break,执行到switch语句结束。
4.如果匹配的case或者default没有对应的break,那么程序会继续向下 执行,运行可以执行的语句,直到遇到 break或者switch结尾结束

int x = 1;
switch(x)
{
   case 1:
       System.out.println("a");
       break;
   case 2:
       System.out.println("b");
       break;
    default:
       System.out.println("不存在");
           break;
}

需求:根据输入的月份不同,显示春天、夏天、秋天、冬天。
思路:春季:3月-5月,夏季:6月-8月,秋季:9月-11月,冬季:12月-2月

int x = 1;
switch(x)
{
    case 3:
    case 4:
    case 5:
        System.out.println(x+"春季");
        break;
    case 6:
    case 7:
    case 8:
        System.out.println(x+"夏季");
        break;
    case 9:
    case 10:
    case 11
        System.out.println("秋季");
        break;
    case 12:
    case 1:
    case 2:
        System.out.println(x+"冬季");
        break;
     default:
        System.out.println(x+"不存在月份");
            break;
}

if和switch很像:具体什么场景下,应用哪个语句呢?
如果判断的具体数据值不多,而符合byte short int char四种类型。
虽然两个语句都可以使用,建议使用switch,因为效率稍微高一些。
其他情况对区间进行判断,结果为boolean类型判断,使用if,if的使用范围更广。

三、循环结构

3.1 while循环

while(表达式)
{
循环体(执行语句);
}
//输出1-10所有寄数

int x = 1;
while(x<10)
 {
    System.out.println("x="+x);
    x+=2;//把左右两边加起来的和赋值给左边
}

3.2 do while循环

do while语句格式:
do
{
执行语句;
}while(条件表达式);

int x = 1;
do
{
System.out.println("x="+x);
x++;
}while(x<3);

while与do while区别:
while:先判断条件,只有条件满足才执行循环体
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体
do while:条件无论是否满足, 循环体至少被执行一次

3.3 for循环

for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}

for(int x = 0;x<3;x++)
{
    System.out.println("x="+x);
}
        int x = 1;
        for(System.out.println("a");x<3;System.out.println("c"))
        {
            System.out.println("d");
            x++;
        }
        //输出结果:adcdc,所以不是所有for的初始化都要是int x = 0;

for与while区别
1,for里面的两个表达式运行的顺序,初始化表达式只读一次,判断循环条件, 为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件, 重复找个过程,直到条件不满足为止。

image.png

2,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是 在内存中释放。而 while循环使用的变量在循环结束后还可以继续使用。
3,最简单无限循环格式:while(true) , for(;;){}无限循环存在的原因是并不知道循 环多少次,而是根据某些条件,来控制循环。
练习1.获取1~10的和,并打印
//循环注意:一定要明确那些语句需要参与循环,那些不需要

        /*
        0+1
          1+2
          3+3
          6+4
          */
        int sum = 0;//定义变量用处存储不断变化的和,int x = 1;定义变量用于被加的数
        for(int x = 1;x<10;x++)
        {
            sum+=x;
        }
        System.out.println("sum="+sum);

其实这就是累加思想
原理:通过变量记录住循环操作后的结果,通过循环的形式,进行累加动作。
练习2:计算1-100,7的倍数个数
思路:1.先对1~100进行循环
2.再循环的过程中,定义条件,只对7的倍数进行操作
3.因为7的倍数不确定,只要符合条件,就通过一个变量记录这个变化的次数
步骤:1.定义循环语句,选择for语句
2.再循环中定义判断,只要是7的备注即可。使用if语句,条件:7的倍数 x%7==0;
3.定义变量,该变量随着7的倍数的出现而自增

        int count = 0;
        for(int x = 1;x<100;x++)
        {
            if(x%7==0)
            {
                count++;
            }
        }
        System.out.println("count="+count);

计数器思想:通过一个变量记录住数据的状态。也需要通过循环完成
练习3:ForFor嵌套循环

/*输出:
***
**
*
*/
for(int x = 0;x<5;x++)//控制行数
{           
    for(int y = x;y<3;y++)//控制列数
    {
        System.out.print("*");
    }
    System.out.println();
}
/*
*
**
***
*/
    for(int x = 0;x<3;x++)
        {   
            for(int y =0;y<=x;y++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

规律:当的尖朝上,可以改变条件。让条件随着外循环变化。
的尖朝下,可以改变初始化值,让初始化随着外循环变化。
写99乘法表

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

推荐阅读更多精彩内容

  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 705评论 1 1
  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 569评论 0 0
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 1,950评论 0 3
  • 控制流 [TOC] Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不...
    伍哥___阅读 510评论 0 0
  • 点点可可老师原玉: 人道回春是杏林,而今谁送杏林人。抱薪为众毙于雪,何苦签书又染尘。 风正厉,梦还温,今朝一去怎甘...
    游游侠阅读 863评论 7 22