6.选择结构

选择结构

检查问题

1.类名采用了小驼峰
2.包名采用了大写
3.运算符左右没留空格

int num = 10;

System.out.println(“我的年龄是:” + num);

4.注释的//和注释之间没有留空格

// 这是注释

5.变量乱起名

你可以用有道词典来搜索对应的意思

身高:name

身高*身高:age2

6.代码中一行注释也没有

代码要包含40%以上的注释

注释写代码的含义或者你的思路或者你反复也记不住的

流程控制语序

任何一个语言编制出来的程序都包含三种控制语句,因为它们可以让你的程序变得“丰富多彩”。

顺序控制语序

// 顺序流程语句

// 自上而下

System.out.println(“我是语句1”);

System.out.println(“我是语句2”);

System.out.println(“我是语句3”);
在这里插入图片描述

**选择控制语序
根据条件表达式,决定以部分代码是否可以正常执行。
条件表达式就是利用关系运算符和逻辑运算符来实现判断的过程,结果永远为布尔类型:true(真、成立)、false(假、不成立)。
在这里插入图片描述
**

**循环控制语序
可以帮助我们解决重复性的工作问题。
在这里插入图片描述

三种流程控制语句是要结合使用,每种都有它解决的问题。**

流程图绘制

UML

if系列选择结构
基础if
if:如果

if (条件表达式) {

// 条件成立时执行的代码段

}

Scanner scan = new Scanner(System.in);

System.out.print(“请输入您的年龄:”);

int age = scan.nextInt();

// 判断

// 如果你的年龄是大于等于18的

if (age >= 18) {

// 那么就提示你可以进入网吧了

System.out.println("可以进入网吧啦!");

}

复杂条件的情况,因为业务需要,经常要结合逻辑运算符来实现条件表达式。

Scanner input = new Scanner(System.in);

System.out.print(“请输入乔治的Java成绩:”);

double javaScore = input.nextDouble();

System.out.print(“请输入乔治的音乐成绩:”);

double musicScore = input.nextDouble();

if ((javaScore > 90 && musicScore > 80) ||

(javaScore == 100 && musicScore > 70)) {

System.out.println("奖励他一顿棒子'炖'肉!");

}

可读性非常高,边读边写都可以。

互斥if

if (条件) {

// 条件成立时执行的

} else {

// 条件不成立时执行的

}

如果用基础if来实现一些互斥效果内容,效果如下:

Scanner input = new Scanner(;

System.out.print(“请输入乔治的Java成绩:”);

double javaScore = input.nextDouble();

System.out.print(“请输入乔治的音乐成绩:”);

double musicScore = input.nextDouble();

if ((javaScore > 90 && musicScore > 80) ||

(javaScore == 100 && musicScore > 70)) {

System.out.println("奖励他一顿棒子'炖'肉!");

}

if (!((javaScore > 90 && musicScore > 80) ||

  (javaScore == 100 && musicScore > 70))) {

System.out.println("奖励他给小红买一个 iPhone 11!");

}

Scanner input = new Scanner(System.in);

System.out.print(“请输入您的年龄:”);

int age = input.nextInt();

// 判断

if (age >= 18) {

System.out.println("网管:可以进来啦!");

}

if (age < 18) {

System.out.println("网管:滚");

}

互斥if写法:

Scanner input = new Scanner(System.in);

System.out.print(“请输入您的年龄:”);

int age = input.nextInt();

// 判断

if (age >= 18) {

System.out.println("网管:可以进来啦!");

} else {

System.out.println("网管:滚");

}

多重if
多分支的判断,按照自上而下的执行判断,只要有一个满足就不再向后执行其他的条件判断。

if (条件1) {

// 条件1成立时执行的代码段

} else if (条件2) {

// 条件2成立时执行的代码段

} else if (…略…) {

// ...略...

} else {

// 上方条件都不满足时执行的代码段

}

// 选择:基础if

Scanner input = new Scanner(System.in);

System.out.print(“请输入佩奇的Java成绩:”);

double score = input.nextDouble();

// 判断

if (score >= 80) {

System.out.println("奖励她一部 OnePlus 8 Pro");

}

// 60 <= score < 80

if (score >= 60 && score < 80) {

System.out.println("奖励她一部一加云耳");

}

if (score < 60){

System.out.println("奖励她给小红买一部 iPhone 11 Pro");

}

// 选择:基础if

Scanner input = new Scanner(System.in);

System.out.print(“请输入佩奇的Java成绩:”);

double score = input.nextDouble();

// 判断

if (score >= 80) {

System.out.println("奖励她一部 OnePlus 8 Pro");

} else if (score >= 60) {

System.out.println("奖励她一部一加云耳");

} else {

System.out.println("奖励她给小红买一部 iPhone 11 Pro");

}

多重if在编写条件判断时,注意不要胡乱放置条件,越容易满足或者范围越大的条件应该尽可能放下面。
在做范围型多条件判断时,多重if拥有非常好的优势。
嵌套if

它不是什么特别技术,就是前面的几个if的延伸而已。

// 外部条件不成立,内部条件是不会执行的

if (外部条件) {

if (内部条件) {

    

}

}

Scanner input = new Scanner(System.in);

System.out.print(“请输入您百米赛跑的成绩:”);

double score = input.nextDouble();

// 判断是否能进入决赛

if (score <= 10) {

System.out.println("恭喜您进入决赛!");

// 根据性别分组

System.out.print("请输入您的性别:");

String gender = input.next();

// equals:等于、相等

// 字符串.equals(字符串)  可以用来判断两个字符串内容是否相同

if (gender.equals("男")) {

    System.out.println("男子组欢迎你!");

} else {

    System.out.println("女子组欢迎你!");

}

} else {

System.out.println("很遗憾!下次继续!");

}

由于嵌套if会导致结构愈加混乱,所以使用时注意层级不要嵌套太多。否则容易出现你写的代码,你看不懂这类问题。

而且一般嵌套两层或三层,如果再多一般要考虑其他解决方案。

switch选择结构

多重if在做范围型的多条件判断比较有优势,而做等值判断并没有太优异的表现。

Scanner input = new Scanner(System.in);

System.out.print(“请输入小杨的最终名次:”);

int level = input.nextInt();

// 使用多重if判断

if (level == 1) {

System.out.println("诛仙女猪脚!");

} else if (level == 2) {

System.out.println("斗罗大陆女猪脚!");

} else if (level == 3) {

System.out.println("永夜女猪脚!");

} else {

System.out.println("还想演戏?先拜拜自己吧!");

}

而switch选择结构则恰恰弥补了此问题。

// switch:切换

// case:情况、场景

// break:中断

// default:缺省的,默认的

switch (表达式) {

case 常量值:

    // 代码段

    break;

case 常量值:

    // 代码段

    break;

....

default:

    // 默认处理

    break;

}

Scanner input = new Scanner(System.in);

System.out.print(“请输入小杨的最终名次:”);

int level = input.nextInt();

switch (level) {

case 1: // level == 1

    System.out.println("诛仙女猪脚!");

    break;

case 2: // level == 2

System.out.println(“斗罗大陆女猪脚!”);

    break;

case 3: // level == 3

    System.out.println("永夜女猪脚!");

    break;

default: // level == 4

    System.out.println("还想演戏?先拜拜自己吧!");

    break;

}

注意事项

switch中表达式只能使用 int(byte、short、char)、String(JDK1.7起支持)、枚举类型
byte、short、char可以自动类型转换为int
每一个 case 都要写break,否则会出现case的穿透性,穿透直到下一个break或结束为止

Scanner input = new Scanner(System.in);

System.out.print(“小度小度,今天星期几?”);

int dayOfWeek = input.nextInt();

switch (dayOfWeek) {

case 1:

case 2:

case 3:

case 4:

case 5:

    System.out.println("好好工作");

    break;

case 6:

case 7:

    System.out.println("好好休息!");

    break;

}

建议编写一个默认情况在最后,以防止一些判断未执行的情况

和if的区别

swith只能用于等值判断情况,而多重if还可以用于范围性判断

swith在JDK发展过程中,一直在升级,足以证明Java官方对它的重视

swith在性能方面相较于多重if更有优势

swith在做等值判断时,有其是JDK1.7后,字符串判断比if更加方便

随机数获取

Math.random() 可以获取到[ 0.0,1.0 )之间的随机整数。 (>=0.0并且<1.0)

// [0.0, 1.0)

// double num = Math.random();

// System.out.println(num);

// [5, 10) 随机整数

// 【公式】(int)(Math.random() * (最大值 - 最小值) ) + 最小值

// [0.0, 1.0) -> [0.0, 5.0) -> [0, 5) -> [5, 10)

int num = (int)(Math.random() * 5) + 5;

System.out.println(num);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值