day2.5_流程控制

2022-01-18  本文已影响0人  OmewSPG

程序流程控制

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

顺序结构

image.png

分支语句 if-else

image.png
image.png
注意:

例题

编写程序
由键盘输入三个整数分别存入变量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("...");
        }
    }
}

注意

例题

根据用于指定月份,打印该月份所属的季节。
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
上一篇 下一篇

猜你喜欢

热点阅读