Java逻辑控制

逻辑控制

【本节目标】

  1. Java中程序的逻辑控制语句

  2. Java中的输出输入方式

  3. 完成猜数字游戏


1.概述

我的曾经

早上8:00起床--->洗漱--->吃早饭--->上课--->吃午饭--->上课--->运动--->吃完饭--->玩手机--->睡觉

每天的生活貌似都是这么规律,顺序的做着每件事,前途一片渺茫~~~

直到有一天:

我幡然醒悟,不好好学习可能要卖红薯,奋发图强可能离梦想会更近,从此:早上6:00起床--->看书敲代码--->上课+看编程书籍--->吃午饭--->刷题--->上课+看书--->吃晚饭--->总结--->看科技新闻--->睡觉

就这样日复一日的努力着,感觉每天都很充实,生活看到了希望~~~

再后来:

秋招来了,我用自己所学,在比特老师的帮助与鼓励下,一次次刷新着手中offer的记录,那一刻,我被自己感动了 ~~~

其实程序和人生是一样:顺序中夹杂着循环,伴随一次次选择不断成长


2.顺序结构

顺序结构比较简单,按照代码书写的顺序一行一行的执行。

System.out.println("aaa");

System.out.println("bbb");

System.out.println("ccc");



//运行结果

aaa

bbb

ccc

如果调整代码的书写顺序,则执行顺序也发生变化

System.out.println("aaa");

System.out.println("ccc");

System.out.println("bbb");



//运行结果

aaa

ccc

bbb

3.分支结构

        3.1 if 语句

1.语法格式1(单分支)

if(布尔表达式){

//语句

}

如果布尔表达式结果为true,执行if中的语句,否则不执行。

比如:小明,如果这次考试考到90分或以上,给你奖励一个鸡腿。

int score = 92;

if(score >= 90){

System.out.println("吃个大鸡腿!!!");

}

2.语法格式2(双分支)

if(布尔表达式){

//语句1

}else{

//语句2

}

如果布尔表达式为true,则执行if中语句,否则执行else中语句

比如:小明,如果这次考到90分以上,给你奖励一个大鸡腿,否则奖你一个大嘴巴子。

int score = 92;

if(score >= 90){

System.out.println("吃个大鸡腿!!!");

}else{

System.out.println("挨大嘴巴子!!!");

}

3.语法格式3(多分支)

if(布尔表达式1){

// 语句1

}else if(布尔表达式2){

// 语句2 }else{

// 语句3

}

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3

比如:考虑到学生自尊,不公开分数排名,因此:

  • 分数在 [90, 100] 之间的,为优秀

  • 分数在 [80, 90) 之前的,为良好

  • 分数在 [70, 80) 之间的,为中等

  • 分数在 [60, 70) 之间的,为及格

  • 分数在 [ 0, 60) 之间的,为不及格

  • 错误数据

按照上述办法通知学生成绩。

if(score >= 90){

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 if(score >= 0 && score < 60){

System.out.println("不及格");

}else{

System.out.println("错误数据");

}

【练习】

  1. 判断一个数字是奇数还是偶数

    int num = 10;
    
    if(num % 2 == 0){
    
    System.out.println("num 是偶数");
    
    }else{
    
    System.out.println("num 是奇数");
    
    }

  2. 判断一个数字是正数,负数,还是零

int num = 10;

if (num > 0) {

System.out.println("正数");

} else if (num < 0) {

System.out.println("负数");

} else {

System.out.println("0");

}
  1. 判断一个年份是否为闰年

    int num = 10;
    
    if (num > 0) {
    
    System.out.println("正数");
    
    } else if (num < 0) {
    
    System.out.println("负数");
    
    } else {
    
    System.out.println("0");
    
    }

    【注意事项】

    • 代码风格

      //风格1----->推荐
      
      int x = 10;
      
      if(x == 10){
      
      //语句1
      
      }else{
      
      //语句2
      
      }
      
      
      
      //风格2
      
      int x = 10;
      
      if(x == 10)
      
      {
      
      //语句1
      
      }
      
      else
      
      {
      
      //语句2
      
      }

      虽然两种方式是合法的,但是Java中更推荐使用风格1,{放在if/else同一行.代码跟紧凑。}

    • 分号问题

      int x = 20;
      
      if (x == 10);
      
      {
      
      System.out.println("hehe");
      
      }
      
      
      
      // 运行结果 hehe

      此处再if后面多了一个 分号,导致分号成为了if语句的语句体,而 { } 中的代码已经成为了和一个个与 if 无关的代码块。

    • 悬垂 else 问题

      int x = 10;
      
      int y = 10;
      
      if (x == 10)
      
      if (y == 10)
      
      System.out.println("aaa");
      
      else
      
      System.out.println("bbb");

      if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配. 但是实际开发中我们 不建议 这么写. 最好加上大括号.


      3.2 switch 语句

      基本语法

      switch(表达式){
      
      case 常量值1:{
      
      语句1;
      
      [break;]
      
      }
      
      case 常量值2:{
      
      语句2;
      
      [break;] //[]在这里的意思是可有可无
      
      }
      
      ...
      
      default:{
      
      内容都不满足时执行语句;
      
      [break;]
      
      }
      
      }

      执行流程:

      1. 先计算表达式的值

      2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束

      3. 当表达式的值没有与所列项匹配时,执行default

                代码示例: 根据 day 的值输出星期

int day = 1;

switch(day) {

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;

}

【注意事项】

  • 多个case后的常量值不可以重复

  • switch的括号内只能是以下类型的表达式:

    • 基本类型:byte、char、short、int,注意不能是long类型

    • 引用类型:String常量串、枚举类型

double num = 1.0;

switch(num) {

case 1.0:

System.out.println("hehe");

break;

case 2.0:

System.out.println("haha");

break;

} // 编译出错 Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失

switch(num) {

  ^

1 个错误
  • break不要遗漏,否则会失去“多分支选择”的效果

    int day = 1;
    
    switch(day) {
    
    case 1:
    
    System.out.println("星期一");
    
    // break;
    
    case 2:
    
    System.out.println("星期二");
    
    break;
    
    }
    
    // 运行结果
    
    星期一
    
    星期二

  • switch 不能表达复杂的条件

    // 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
    
    // 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
    
    if (num > 10 && num < 20) {
    
    System.out.println("hehe");
    
    }

  • switch 虽然支持嵌套, 但是很丑,一般不推荐~

int x = 1;

int y = 1;

switch(x) {

case 1:

switch(y) {

case 1:

System.out.println("hehe");

break;

}

break;

case 2:

System.out.println("haha");

break;

}

综上, 我们发现, switch 的使用局限性是比较大的

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值