学习Java的第三天,选择以及循环结构

选择以及循环结构

一、什么是流程控制

流程控制是用来控制程序中的各语句的执行顺序。

学会画流程图,什么是流程图:逐步解决指定问题的步骤和方法的一种图形化表示方法。

在这里插入图片描述

流程结构包括:顺序结构,选择结构,循环结构。通过流程控制语句实现:顺序、选择、循环、跳出。
在这里插入图片描述

二、为什么使用选择结构?

生活中经常会遇到一些选择的情况,比如毕业后是留学还是读研,是就业还是继承家族产业。前提是我们要具有选择的权利,再例如,高考成绩700分,可以选择读北大、或清华或蓝翔,但是成绩很差,是没有办法选择的。

在程序中如果想反馈这样的情况,java提供了一个语法,就是“选择结构”!

三、基本的选择结构有哪些?

swich选择结构

if选择结构:基本if选择结构、if-else选择结构、多重if选择结构、嵌套if选择结构

1、基本if选择结构

//1、基本的if选择结构
if(表达式){
  //代码块
}

例题1:如果张涛成绩大于90.,老师奖励一台iPhone(可于Scanner结合)if选择结构与逻辑运算结合

import java.util.*;
public class Test01 {
    public static void main(String[] args){
        Scanner inout = new Scanner(System.in);
        System.out.print("请输入你的成绩:");
        double score = inout.nextDouble();
        if (score>90){
            System.out.print("非常棒,奖励iPhone一台!");
        }
    }
}

例题2:如果张涛的Java成绩大于90并且音乐成绩大于80,老师奖励,或者Java成绩等于100并且音乐成绩大于70,老师奖励。

import java.util.*;
public class Test02 {
    public static void main(String[] args){
        Scanner inout = new Scanner(System.in);
        System.out.println("请输入张涛的Java成绩:");
        double javaScore =inout.nextDouble();
        System.out.println("请输入张涛的音乐成绩:");
        double musicScore =inout.nextDouble();
        if ( (javaScore>90 && musicScore>80) || (javaScore==100 && musicScore>70)){
            System.out.print("奖励iPhone一台");
        }
    }
}

使用选择结构解决问题的步骤(需反复实践):
1、读懂需求,分析使用到的知识点
2、画流程图梳理思路
3、将流程图转化为代码
4、通过运行结果复盘和调整代码
(不要怕出错,现在学习过程中遇到的错误,就是为以后总结经验)

2、if else选择结构

//2、if-else选择结构
if(表达式){
  //代码块
}else{
  //代码块
}

使用场景:如果XXXX,那么XXX,否则XXX,那么XXX

例题1:张涛Java成绩大于90时,老师奖励一部iPhone,小于90时,惩罚边表演节目一次,利用if else选择结构。

import java.util.Scanner;
public class Test03 {
    public static void main(String[] args){
        //输入张涛的成绩
        Scanner inout = new Scanner(System.in);
        System.out.print("请输入你的成绩:");
        double score = inout.nextDouble();
        if (score>90){
            System.out.print("非常棒,奖励iPhone一台!");
        }else{
            System.out.println("惩罚你表演节目!");
        }
    }
}

注意事项:
1)、条件后面不加分号
2)、代码块只有一条语句(一个语句块)时,建议不要省略{}
3)、代码的对齐和缩进要清晰,方便读写
4)、必要的注释一定要添加

3、多重if选择结构

//3、多重if选择结构
if(表达式){
  //代码块
}else if(表达式){
  //代码块
}···
else{
	//其中else可以省略,并且如果else中只有一行代码{}也可以省略,但是一般不建议省略,代码丢失了可阅读性
}

例题1:

对学员的考试成绩评测
成绩>=80:优秀
成绩>=60:良好
成绩<60:差

分析:如果使用多个if,成绩小于60,大于等于60,都没问题,但是当成绩大于=80时,结果会出现 优秀 良好,因为90既大于80 又大于60,因此使用多重if选择结构即可解决问题。

import java.util.*;
public class Test04 {
    public static void main(String[] args){
        Scanner inouut = new Scanner(System.in);
        System.out.println("请输入学员的考试成绩:");
        double score = inouut.nextDouble();
        if (score>=80){
            System.out.println("优秀");
        }else if (score>=60){
            System.out.println("良好");
        }else{
            System.out.println("差");
        }
    }
}

注意:多重if的条件注意书写顺序,从小到大,或者从大到小,否则可能影响执行结果。

4、嵌套if选择结构

//4、嵌套if选择结构
if(表达式){
  //代码块
  	if(表达式){
  	//代码块
    }else{
    //代码块
    }
}else{
   //代码块
}

例题1:

学校举行运动会,百米赛跑跑入10秒内的学生有资格进入决赛,然后还要根据性别分别进入男子组和女子组。

提示:字符串的比较使用equals(),equals输出的数据类型是布尔类型即,true or false
如:sex.equals(“男”);

import java.util.*;
public class Test05 {
    public static void main(String [] args){
        Scanner inout  = new Scanner(System.in);
        System.out.println("请输入您的比赛成绩(s):");
        double score = inout.nextDouble();
        if (score<10){
            System.out.println("恭喜您成功进入决赛!");
            System.out.println("请输入您的性别:");
            String sex = inout.next();
            if (sex.equals("男")){
                System.out.println("恭喜您,进去男子组决赛");
            }else if(sex.equals("女")){
                System.out.println("恭喜您,进去女子组决赛");
            }else {
                System.out.println("您输入的信息不正确");
            }
        }else {
            System.out.println("很遗憾,您被淘汰了");
        }
    }
}

注意:嵌套if控制语句可以通过外层语句和内层语句的协作,增强程序的灵活性。

例题2:

结合之前的会员卡号,会员号的百位数等于随即苍生的数字即成为幸运会员。

提示:产生随机数(0-9)的方法如下
int random = (int)(Math.random()*10);

解释:Math.random()是Java中的 一个类,可以产生一个0.01.0的随机数,因此再Math.random()后面✖10,变成生成一个1.010.0的随机数,由于产生的随机数的数据类型是浮点型(double)而我们需要的是一个整数,故此利用(int)对其强行转换,得到一个整数型的随机数。

import java.util.Scanner;
public class Test06 {
    public static void main(String[] args){
        Scanner inout= new Scanner(System.in);
        System.out.print("请输入您的卡号:");
        int cardNo = inout.nextInt();
        System.out.println("您的卡号是:"+cardNo);
      	//提取输入的卡号的各个位数
        int qianWei = cardNo/1000;
        int baiWei = cardNo%1000/100;
        int shiWei = cardNo%1000%100/10;
        int geWei = cardNo%1000%100%10;
        int zongHe = geWei+shiWei+baiWei+qianWei;
        System.out.println("您的会员卡号的个位数是:"+geWei);
        System.out.println("您的会员卡号的十位数是:"+shiWei);
        System.out.println("您的会员卡号的百位数是:"+baiWei);
        System.out.println("您的会员卡号的千位数是:"+qianWei);
		//生成随机数字
        int random = (int)(Math.random()*10);
        System.out.println("本次随机数字是:"+random);
        if (baiWei==random){
            System.out.println("恭喜您,成为幸运用户!");
        }else{
            System.out.println("很遗憾,您与大奖擦肩而过");
        }
    }
}

5、swich选择结构

//5、switch选择结构
switch(表达式){
	case 常量1:
		break;
	case 常量2:
		break;
	···
	default:
		[break;]
}

解释:表达式先跟常量1比较,是满足就执行常量1 的语句,不满足就继续与常量2 比较,同理,当所有常量都不满足时,执行default语句,break是跳出Swich的意思,如果缺少break就不会跳出。

例题1:
小明参加Java比赛,如果获得第一名,参加麻省理工大学的夏令营,如果获得第二名,奖励苹果笔记本一台,如果或获得第三名,奖励华为手机一部,否则,不给任何奖励。

import java.util.*;
public class Test07 {
    public static void main(String[] args){
        Scanner input = new Scanner (System.in);
        System.out.println("请输入您的比赛名次:");
        int mingCi = input.nextInt();
        switch (mingCi){
            case 1:
                System.out.println("恭喜您获得第一名,奖励参加麻省理工大学的夏令营");
                break;
            case 2:
                System.out.println("恭喜您获得第二名,奖励苹果笔记本一台");
                break;
            case 3:
                System.out.println("恭喜您获得第三名,奖励华为手机一部");
                break;
            default:
                System.out.println("很遗憾,您没有奖励,再接再厉");
        }
    }
}

注意:

1)、swich的执行顺序依旧是从上往下,default块的顺序可以变动,但是要注意其执行顺序,通常,default块放在结尾,不改动。

2)、swich中的表达式只能是以下几种类型:int、short、byte、char、String、枚举类型。

3)、对于数值类型判断是否相等,可以使用==号,但是如果判断字符串或者自定义的数据类型(引用数据类型),==号判断的是两个对象的地址是否相等,如果想判断值的内容是否相等,需要使用equals()方法。

提问:能不能使用多重if呢?

可以但是使用多重if有缺点:结构复杂,啰嗦。使用swich结构的优点:条件为等值判断,什么是等值,即当题目中是第一名第二名第三名这种精确的点,数值等值的判断

4)、swich和多重if的相同点:都是用来处理分支条件的结构。

5)、swich和多重if的不同点:swich选择结构只能处理等值条件判断的情况
多重if选择结构没有swich选择结构的限制,特别适合某个变量处于某个连续区间时的情况,比如成绩>80是优秀,成绩>=60是良好,成绩小于60是差,这种区间段不再是等值点这只能是由多重if。

四、总结

if选择结构,包括以下形式:
1、基本if选择结构:可以处理单一或组合条件的情况
2、if-else选择结构:可以处理简单的条件分支情况
3、多重if选择结构:可以处理分段的条件分支情况
4、嵌套if选择结构:可以处理复杂的条件分支情况

swich选择结构:
多重分支并且条件判断是等值判断的情况

学会使用流程图分析问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值