美文网首页
day2.5_流程控制

day2.5_流程控制

作者: OmewSPG | 来源:发表于2022-01-18 18:04 被阅读0次

程序流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

  • 顺序结构
  • 分支结构
  • 循环结构

顺序结构

image.png

分支语句 if-else

image.png
image.png
注意:
  • 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  • 语句块只有一条执行语句时,一对{}可以省略,但建议保留
  • if-else语句结构,根据需要可以嵌套使用
  • 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓,当多个条件是“包含”关系时,“小上大下 / 子上父下”

例题

编写程序
由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。

import java.util.Scanner;
class Ifexam2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // if——else语句可以嵌套
        System.out.println("Enter the first number please: ");
        double num1 = scan.nextDouble();
        System.out.println("Enter the second number please: ");
        double num2 = scan.nextDouble();
        System.out.println("Enter the third number please: ");
        double num3 = scan.nextDouble();

        // 按从小到大排序
        // 插值法
        if(num1 > num2){
            if(num3 > num1){
                System.out.println(num2 +","+ num1 +","+ num3);
            }else if(num3 < num2){
                System.out.println(num3 +","+ num2 +","+ num1);
            }else{
                System.out.println(num2 +","+ num3 +","+ num1);
            }
        }else{
            if(num3 > num2){
                System.out.println(num1 +","+ num2 +","+ num3);
            }else if(num3 < num1){
                System.out.println(num3 +","+ num1 +","+ num2);
            }else{
                System.out.println(num1 +","+ num3 +","+ num2);
            }
        }

    }
}

博彩游戏
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
一个两位数,然后按照下面的规则判定用户是否能赢。

  1. 如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
  2. 如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
  3. 如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
  4. 如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
  5. 如果用户输入的数字没有匹配任何一个数字,则彩票作废。
import java.util.Scanner;
class Gambol {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random() * 90 + 10);

        int num1 = num / 10;
        int num2 = num % 10;

        System.out.print("Enter your number please:  ");
        int mynum = scan.nextInt();
        int mynum1 = mynum / 10;
        int mynum2 = mynum % 10;

        if(mynum == num){
            System.out.println("you got 10000$ !!!");
        }else if(mynum1 == num2 && mynum2 == num1){
            System.out.println("you got 3000$!");
        }else if(mynum1 == num1 || mynum2 == num2){
            System.out.println("you got 1000$!");   
        }else if(mynum1 == num2 || mynum2 == num1){
            System.out.println("you got 500$");
        }else{
            System.out.println("Sorry you got no prize..");
        }

        System.out.println("the real number is : " + num);
    }
}

分支语句 switch-case

image.png

举个例子

/*
switch--case 结构

注意:switch会按条件顺序比对执行,除非遇到break,否则会依次执行所有语句
*/
class SwitchTest{
    public static void main(String[] args) {
        int num = 2;
        switch(num){
        case 0:
            System.out.println("zero");
            break;
        case 1:
            System.out.println("one");
            break;
        case 2:
            System.out.println("two");
            break;
        case 3:
            System.out.println("three");
            break;
        default:
            System.out.println("...");
        }
    }
}

注意

  • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
  • case子句中的值必须是常量,不能是变量名或不确定的表达式值;
  • 同一个switch语句,所有case子句中的常量值互不相同;
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
  • default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

例题

根据用于指定月份,打印该月份所属的季节。
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季

import java.util.Scanner;
class Season {
    public static void main(String[] args){
        System.out.print("Please enter your month:  ");
        Scanner scan = new Scanner(System.in);
        int month = scan.nextInt();

        switch(month)
        {
        case 3:
        case 4:
        case 5:
            System.out.println("Spring");
            break;

        case 6:
        case 7:
        case 8:
            System.out.println("Summer");
            break;

        case 9:
        case 10:
        case 11:
            System.out.println("Autumn");
            break;

        case 12:
        case 1:
        case 2:
            System.out.println("Winter");
            break;

        }
    }
}

编写程序
从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。

import java.util.Scanner;
class  Noname2{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter the month please...");
        int month = scan.nextInt();
        System.out.print("Enter the date please...");
        int date = scan.nextInt();

        int day = 0;

        switch(month)
        {   
            case 12:
                day += 30;
            case 11:
                day += 31;
            case 10:
                day += 30;
            case 9:
                day += 31;
            case 8:
                day += 31;
            case 7:
                day += 30;
            case 6:
                day += 31;
            case 5:
                day += 30;
            case 4:
                day += 31;
            case 3:
                day += 28;
            case 2:
                day += 31;
            case 1:
                day += 0;
        }

        day += date;
        System.out.println("the number of day is: " + day);
    }
}

循环语句 for

image.png

例题

输出所有的水仙花数
所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
例如: 153 = 111 + 333 + 555

class FlowerNumber {
    public static void main(String[] args) {
        for(int i = 100; i < 1000; i++){
            /*  
                int num = 255;
                System.out.println("这个数的是:" + num);
                System.out.println("这个数的个位是:" + (num % 100 % 10));
                System.out.println("这个数的十位是:" + (num % 100 / 10));
                System.out.println("这个数的百位是:" + (num / 100));
            */
            int i1 = i / 100;
            int i2 = i % 100 / 10;
            int i3 = i % 100 % 10;
            if(i1 * i1 * i1 + i2 * i2 * i2 + i3 * i3 * i3 == i){
                System.out.println(i);
            }

        }
    }
}

编写程序
打印出九九乘法表与正、倒三角形

class nn99 {
    public static void main(String[] args) {
                // 九九乘法表
        for (int i = 1 ;i <= 9 ;i++ ){
            for(int j = 1; j <= i; j++){
                System.out.print(j + " x " + i + " = " + (i * j));
                System.out.print("  ");
            }
            System.out.print("\n");
        };

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

                // 正三角形
        for (int i = 1 ;i <= 9 ;i++ ){
            for(int j = 1; j <= i; j++){
                System.out.print("★");
                System.out.print("  ");
            }
            System.out.print("\n");
        };

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

                // 倒三角形
        for (int i = 9 ;i >= 1 ;i-- ){
            for(int j = 1; j <= i; j++){
                System.out.print("★");
                System.out.print("  ");
            }
            System.out.print("\n");
        };
    }
}

打印结果:


image.png

编写程序
输出一百以内的所有质数
方法一:

class PrimeNumber {
    public static void main(String[] args) {
        boolean flag = true;
        for(int i = 2; i < 100; i++){
            for(int j = 2; j < Math.sqrt(i); j++){
                if(i % j == 0){
                    flag = false;
                    break;
                }
            }
            if(flag == true){
                System.out.println(i);
            }
            flag = true;   // flag 必须要重置
        }
    }
}

方法二:

class PrimeNumber2 {
    public static void main(String[] args) {
        label:for(int i = 2; i < 100; i++){
            for(int j = 2; j < Math.sqrt(i); j++){
                if(i % j == 0){
                    continue label;  // 跳出指定标签循环
                }
            }
            System.out.println(i);
        }
    }
}

循环语句 while

image.png image.png

循环语句 do-while

image.png image.png

break和continue

image.png image.png image.png image.png

相关文章

  • day2.5_流程控制

    程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程...

  • 5-流程控制

    流程控制 流程 计算机执行代码的顺序就是流程 流程控制 对计算机代码执行顺序的管理就是流程控制 流程分类 流程控制...

  • 04-流程控制及while循环

    流程控制 流程: 计算机执行代码的顺序,就是流程。 流程控制: 对计算机代码执行顺序的控制,就是流程控制。 流程分...

  • JavaScript-流程控制语句

    一、if流程控制语句 二、switch流程控制语句 三、流程控制语句

  • js流程控制

    2 - 流程控制 2.1 流程控制概念 2.2 顺序流程控制 ​ 顺序结构是程序中最简单、最基本的流程控制,它...

  • 二级-2.Python流程控制

    流程控制 流程:计算机执行代码的顺序就是流程。 流程控制:对计算机代码执行顺序的管理就是流程控制。 流程控制一共分...

  • Python基础重构-1.3流程控制

    流程控制语句 流程控制语句用来实现对程序流程的选择、循环和返回等进行控制,Python中主要的流程控制包括if(判...

  • activiti学习笔记(九)RuntimeService

    RuntimeService 流程运行控制服务 启动流程及对流程数据的控制 流程实例(ProcessInstanc...

  • 【骚全带你学Java---八、流程控制语句】

    java的流程控制语句包含条件语句和循环语句 一.什么是流程控制语句? ·流程控制语句:可以控制程序的执行流程。 ...

  • 2018-11-29

    17js流程控制switch 17js流程控制switch //js流程控制swi...

网友评论

      本文标题:day2.5_流程控制

      本文链接:https://www.haomeiwen.com/subject/mswkhrtx.html