程序流程控制

程序的流程控制一般分为3种:顺序结构、分支结构、循环结构

  • 顺序结构:就是不加任何控制,代码从main方法开始自上而下执行

  • 分支结构:就是根据条件判断是true还是false,有选择性的执行哪些代码。在Java语言中提供了两个格式if 、 switch

  • 循环结构:就是控制某一段代码重复执行。

分支结构

if分支

//1、单分支if结构
    /*
    if(条件表达式){
        代码
    }
    */
// 需求:测量用户体温,发现体温高于37度就报警。
double temp = 38;
if (temp > 37) {
    System.out.println("这个人体温不正常,快把他抓走");
    System.out.println("这个人体温不正常,快把他抓走");
    System.out.println("这个人体温不正常,快把他抓走");
}
System.out.println("我是代码的剩余部分");
​
//2、双分支if结构
    /*
    if(条件表达式){
        代码
    }else{
        代码
    }
    */
// 需求2:发红包,你的钱包余额是99元,现在要发出90元
// 如果钱够触发发红包的动作,如果钱不够,则提示:余额不足。
public static void main(String[] args) {
// 需求2:发红包,你的钱包余额是99元,现在要发出90元
// 如果钱够触发发红包的动作,如果钱不够,则提示:余额不足。
    System.out.println("我要开始发红包了");
    double balance = 89;
    if (balance > 90) {
        balance -= 90;
        System.out.println("你的余额是" + balance);
    } else {
        System.out.println("余额不足");
    }
    System.out.println("继续执行main方法");
}    
​
​
//3、多分支if结构
    /*
    if(表达式1){
        代码
    }else if(表达式2){
        代码
    }else if(表达式2){
        代码
    }else{
        代码
    }
    */
​
// 需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。[0,60) D[60,80) C [80,90) B [90,100] A
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入员工打分成绩");
    double score = sc.nextDouble();
    if (score >= 0 && score < 60) {
        System.out.println("员工绩效级别:D");
    } else if (score < 80) {
        System.out.println("员工绩效级别:C");
    } else if (score < 90) {
        System.out.println("员工绩效级别:B");
    } else if (score <= 100) {
        System.out.println("员工绩效级别:A");
    } else {
        System.out.println("你输入的成绩不合理");
    }
    System.out.println("继续执行main方法");
}
​
​
​
//4、嵌套if控制语句
    /*
    if(表达式1){
        if (表达式2){
            语句1
        }else{
            语句2
        }
    }else{
        if (表达式3){
            语句3
        }else{
            语句4
    }
    */
​
​

switch分支

// 先输入年份,在输入一个月份,返回这个月多少天
import java.util.Scanner;
​
public class Demo01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        int year = sc.nextInt();
        System.out.println("请输入一个月份:");
        int month = sc.nextInt();
        if (year%4==0 && year%100!=0 || year%400==0) {
            switch (month){
                case 1, 3, 5, 7, 8, 10, 12-> System.out.println("这个月有31天");
                case 4,6,9,11 -> System.out.println("这个月有30天");
                case 2 -> System.out.println("这个月有29天");
            }
        }
        else {
            switch (month){
                case 1, 3, 5, 7, 8, 10, 12-> System.out.println("这个月有31天");
                case 4,6,9,11 -> System.out.println("这个月有30天");
                case 2 -> System.out.println("这个月有28天");
            }
        }
    }
}

switch分支新特性

1、箭头表达式

2、yield

ifswitch如何选择

  • 如果是对一个范围进行判断,建议使用if分支结构

  • 如果是与一个一个的值比较的时候,建议使用switch分支结构

8/3

循环结构

while循环

/*
初始化语句;
while(循环条件){
    循环体语句;
    迭代语句;   
}
*/
​
// 例:打印5行Hello kfm
int a = 0;
while (a < 5) { 
System.out.println("hello kfm");
a ++;
}
​
//世界最高山峰珠穆朗玛峰高度是:8848.86米 = 8848860 毫米,假如我有一张足够大的它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
​
public class Demo01 {
    public static void main(String[] args) {
        int num = 0;
        double i = 0.1;
        while(i < 8848860){
            i*=2;
            num ++;
​
        }
        System.out.println(num);
    }
}
​
​
// 编写一个循环,计算并输出从 1到10的所有整数的平方
public class Demo03 {
    public static void main(String[] args) {
        
        int num = 0;
        int i = 1;
        while (i <= 10){
            num = i*i;
            i++;
            System.out.println(num);
        }
​
    }
}
​

for循环

for (表达式1; 表达式2; 表达式3) {
    循环体
}
// 表达式1 : 循环变量的初始化
// 表达式2 : 循环条件
// 表达式3 : 改变循环变量的值
// 循环体 :要重复循环的部分
​
// 例:打印3行Hello World
for (int i = 0; i < 3; i ++) { 
System.out.println("hello world");
}
​
//编写一个Java程序,使用for循环输出所有7的倍数,直 直到200为止
package day4;
​
public class Demo02 {
    public static void main(String[] args) {
        //编写一个Java程序,使用for循环输出所有7的倍数,直 直到200为止
        for (int i = 1;i<=200;i++){
            if (i%7==0){
                System.out.println(i);
            }
        }
    }
}
​
​
//编写一个循环,计算并输出从 1 到 100 之间所有偶数的和
public class Demo04 {
    public static void main(String[] args) {
        //编写一个循环,计算并输出从 1 到 100 之间所有偶数的和
        int num = 0;
        for(int i=0;i<=100;i+=2){
            num+=i;
        }
        System.out.println(num);
    }
}
​
​
//编写一个循环,计算并输出从 10 到1之间所有奇数的乘积
public class Demo5 {
    public static void main(String[] args) {
        //编写一个循环,计算并输出从 10 到1之间所有奇数的乘积
        int num = 1;
        for (int i = 9;i>=1;i-=2){
            num *= i;
        }
        System.out.println(num);
    }
}

do-while循环

初始化语句;
do{
    循环体语句;
    迭代语句;
}while(循环条件);
​

死循环

// for死循环
for ( ; ; ){
System.out.println("Hello World1");
}
// while死循环
while (true) {
System.out.println("Hello World2");
}
// do-while死循环
do {
System.out.println("Hello World3");
}while (true);

嵌套循环

//输出三角形;
public class Demo06 {
    public static void main(String[] args) {
        //输出三角形;
        int n = 5;
        for (int i =1;i<=n ;i++){    //控制行的输出
            for (int j=1;j<=n-i;j++){   //输出空格
                System.out.print(" ");
            }
            for(int s=1;s<=2*i-1;s++){   //输出 *
                System.out.print("*");
            }
​
            System.out.println();
        }
​
    }
}
​
​
​
//输出一个九九乘法表;
​
public class Demo07 {
    public static void main(String[] args) {
        //输出一个九九乘法表;
        int pro=1;
        for (int i =1;i<=9;i++){
            for (int j=1;j<=i;j++){
                pro =i*j;
                System.out.print(j+"*"+i+"="+pro+"\t");
                if(i == j){
                    System.out.print("\n");
                }
            }
        }
​
    }
}
​

跳转语句

标签

标签可以放在for、while或do语句之前,其语法格式为:

标签:语句;

break

/
/ break:跳出并结束当前所在循环的执行。
// 场景:假如你有老婆了,你犯错了,你老婆罚你说:5句我爱你
// 说到第三句的时候心软了,让你别再说了。
for (int i = 0; i < 5; i ++) { // i = 0 i = 1 i = 2 i = 3
    if (i == 3) {
        break;
    }
    System.out.println("我爱你");
}

continue

// continue:跳出当前循环的当次执行,直接进入循环的下一次执行。
// 场景: 假如你有老婆,你犯错了,你老婆罚你洗碗5天。
// 第三天的时候,你表现很好,第三天不用洗碗,但是不解恨,第四天还是要继续的。
for (int i = 0; i < 5; i ++) { // i = 0 i = 1 i = 2 i = 3 i = 4
	if (i == 3) {
		continue;
	}
	System.out.println("洗碗");
}

循环结构总结

  1.  
    1. 什么是流程控制

    答:流程控制是用来控制程序的执行顺序的

    2. 分支结构if和switch,如何选择?

    答:if分支:一般用于对一个范围进行判断

    switch分支:对一个一个值进行匹配

    3. for循环和while循环、do-while如何循环

    答:知道循环次数用for、不知道循环次数用while

    想要先执行,再判断,用do-while


生成随机数

// 目标:掌握使用Random生成随机数的步骤。
// 1、导包。import java.util.Random; (idea会自动完成)
import java.util.Random;
public class RandomDemo1 {
	public static void main(String[] args) {
		// 2、创建一个Random对象,用于生成随机数。
		Random r = new Random();
		// 3、调用Random提供的功能:nextInt得到随机数。
		for (int i = 1; i <= 20; i++) {
			int data = r.nextInt(10); // [0 - 9]
			System.out.println(data);
		}
	}
}






//随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中 结束游戏

import java.util.Random;
import java.util.Scanner;

public class Demo08 {
    public static void main(String[] args) {
        Random ra = new Random();
        int i = ra.nextInt(100)+1;   //生成1-100的一个随机数;
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.print("请输入一个一百以内的数:");
            int j=sc.nextInt();
            if (i ==j ){
                System.out.println("猜测成功");
                break;
            }else if(j>i){
                System.out.println("大了");
            }else {
                System.out.println("小了");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值