Java_流程控制

Java_流程控制

第一节:多条件分支

1.1. Ifelse结构

1.2. Switchcase结构

第二节:循环结构

2.1. while循环

2.2. dowhile循环(了解)

2.3. for循环

2.4. 循环控制关键字


第一节:多条件分支

1.1. Ifelse结构

双分支结构

多分支

package ifDemo;

public class Test2 {
    public static void main(String[] args) {
        /*给定任意整数
        如果是3的倍数  输出乒
        如果是5的倍数  输出乓
        如果是3和5的倍数 输出乒乓
        如果都不是 输入该数字本身
        if(条件1){
            分支1
        }else if(条件2){
            分支2
        }else if(条件3){
            分支3
        }......
        else{
        }
        从上向下按个检查条件是否成立
        如果其中的某一个条件成立了 则执行对应的分支代码 其余条件则不再判断了
        如果所有条件都不成立 那么会自动执行else 中的代码
        */
        int i = 10;
        if(i%15==0){
            System.out.println("乒乓");
        }else if(i%3==0){
            System.out.println("乒");
        }else if(i%5==0){
            System.out.println("乓");
        }else{
            System.out.println(i);
        }

    }
}

给定月份 输入该月份所在的季节以及该季节的主要活动

使用细节问题

给定月份和年份   输入当月的天数

从键盘录入信息

package ifDemo;

/*笔的路径
* 导入Scanner  导包
* */
import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        /*借笔
        * 创建一个扫描仪对象
        * */
        Scanner sc =new Scanner(System.in);
        /*
        *   使用笔写字
        * 从键盘录入信息
        * */
        /*从键盘接受一个整数*/
        System.out.println("请录入一个整数");
        int b =sc.nextInt();
        System.out.println("您输入的是:"+b);

        /*从键盘接受一个浮点数*/
        System.out.println("请录入一个小数");
        double d =sc.nextDouble();
        System.out.println("您输入的是:"+d);

        /*从键盘接受文字*/
        System.out.println("请输入其他内容");
        String s =sc.next();
        System.out.println("您输入的是:"+s);

        /*释放资源
        关闭扫描仪
         */
        sc.close();

    }
}

1.2. Switchcase结构

package switchDemo;

public class Test1 {
    public static void main(String[] args) {
        /*
        * switch case
        * switch(变量 非Boolean){
        *   case 变量可能出现的值:
        * }
        * 开关语句
        * */
        /*给定月份 输出季节*/
        int month = 3;
        switch(month){
            case 1:
            case 2:
            case 12:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("月份有误");
                break;
        }





    }
}

用switch语句完成 输入年份和月份输出天数

package switchDemo;

import java.util.Scanner;

public class Test2 {
    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();
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(year+"年"+month+"月有31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(year+"年"+month+"月有30天");
                break;
            case 2:
                if(year %4 ==0){
                    System.out.println(year+"年"+month+"月有29天");
                }else{
                    System.out.println(year+"年"+month+"月有28天");
                }
                break;
            default:
                System.out.println("月份有误");
        }
        sc.close();
    }
}

注意事项

输入学生分数  根据分数输出学生分数等级

<60         不及格

>=60  <70 及格

>=70  <80 一般

>=80  <90 良好

>=90       优秀

If语句完成(略)

switch语句完成

package switchDemo;

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请录入分数");
        int score =sc.nextInt();
        int grade =score/10;//
        /*判断分数等级*/
        switch (grade){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("不及格");
                break;
            case 6:
                System.out.println("及格");
                break;
            case 7:
                System.out.println("一般");
                break;
            case 8:
                System.out.println("良好");
                break;
            case 9:
            case 10:
                System.out.println("优秀");
                break;
            default:
                System.out.println("分数有误");
        }
        sc.close();
    }
}

第二节:循环结构

         让计算机反复执行相同的代码

2.1. while循环

语法                

While(条件){

循环体

}

先判断条件是否成立 如果成立 那么执行循环体  

执行完循环体 再次判断条件是否成立 如果成立 继续执行循环体

直到条件不成立 循环结束

输出1-100

输出1-100 以内所有的偶数

写法1

写法2

输出1-100所有 奇数的和

输出1-100内所有5 的倍数 三个一行

从键盘录入任意的整数 倒叙输出

从键盘录入一个数字 判断一个数是不是水仙花数    

147  >>>>>  1*1*1  + 4*4*4  + 7*7*7 == 147

输出100-1000所有的水仙花数

从键盘输入学生考试的科目数和学生的每科分数 输出 总分 最高分 最低分 平均分

package whileDemo;

import java.util.Scanner;

public class Test8 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入考试科目数");
        int num=sc.nextInt();// 5
        int i =1;
        /*用于统计总分*/
        int sum =0;
        /*用于统计最大值*/
        int max=0;
        /*用于统计最小值*/
        int min =100;
        while(i<=num){
            System.out.println("请录入第"+i+"科的分数");
            int score=sc.nextInt();
            sum+=score;
            /*判断最大值*/
            if(max<score){
                max=score;
            }
            /*判断最小值*/
            if(min>score){
                min=score;
            }
            i++;
        }
        System.out.println("总分为:"+sum);
        System.out.println("平均为:"+(sum*1.0/num));
        System.out.println("最高分:"+max);
        System.out.println("最低分:"+min);
    }
}

从键盘录入一个数字 判断一个数是不是素数

  

3 5 7 11 13 17 19  只能被自己本身和1整除的数字

输出1-100所有的素数

生成随机数

如何在程序中生成指定范围的随机数

23-59 之间的随机数

模拟回合制打怪游戏

玩家 血值315  

怪物 血值500

玩家和怪物互砍

玩家每次攻击怪物产生5-8点伤害

怪物每次攻击玩家产生3-5点伤害

采用回合制 一方挂掉 游戏结束

用程序模拟战斗过程

Int w =315;

         Int g =500;

         While(玩家和怪物都活着){

                  生成玩家攻击力 5

                  怪物血值要对应减少

                  输出  玩家攻击怪物 怪物掉了*点血 还剩*点血

                  生成怪物的攻击力

                  玩家的血值要对应减少

                  输出 怪物攻击玩家 玩家掉了*点血 还剩*点血

}

Sout 游戏结束

package demo1;

public class Test2 {
    public static void main(String[] args) {
        int w=315;
        int g =500;
        //回合计数变量
        int h =1;
        while (true) {
            System.out.println("------------------第"+h+"回合--------------------");
            h++;
            // 玩家攻击力
            int wg =(int)(Math.random()*4)+5;
            // 减少怪物血值
            g-=wg;
            // 输出结果
            System.out.println("玩家攻击怪物,怪物掉了"+wg+"点血,还剩"+g+"点血");
            // 判断怪物是否已经挂掉
            if(g<=0){
                // 让循环停止 输出结果
                System.out.println("怪物挂掉,玩家胜利");
                break;// 停止循环继续执行
            }

            // 怪物攻击力
            int gg =(int)(Math.random()*3)+3;
            // 减少玩家血值
            w-=gg;
            // 输出
            System.out.println("怪物攻击玩家,玩家掉了"+gg+"点血,还剩"+w+"点血");
            // 判断玩家是否已经挂掉
            if(w<=0){
                // 让循环停止 输出结果
                System.out.println("玩家挂掉,怪物胜利");
                break;// 停止循环继续执行
            }
        }
    }
}

循环的嵌套执行

一百担粮食  用一百匹马一次运走

大马   一次驼 4担粮食

中型马 一次驼 2担粮食

小型马 两匹驼1担粮食

问  三种马各有多少匹

穷举法   

算法优化 以及的优劣的评价

算法:  计算机解题的过程

如何评价算法的好坏呢?

1. 从运算次数角度考虑 同样的问题 运算的次数越少越好

2. 运算规模的增加势必会造成计算机运算次数的增加

3. 算法的好坏其实看的是当数据规模产生变化时 运算次数的变化趋势

2.2. dowhile循环(了解)

package demo1;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        // 先判断条件是否成立  如果成立 再执行循环体
        /*int i =0;
        while(i<=10){
            System.out.println(i);
            i++;
        }*/


        /*do while  基本不用
        先执行循环体
        然后再判断条件是否成立
        如果成立 继续执行循环体
        无论条件是否成立 循环体至少会执行一次
        * */
       /* int i =100;
        do{
            System.out.println(i);
            i++;
        }while(i<=10);*/

       /*从键盘录入任意整数 倒叙输出*/
        Scanner sc=new Scanner(System.in);
        System.out.println("请录入任意整数");
        int num =sc.nextInt();
        do{
            //先输出最后一位
            System.out.print(num%10);
            //再让把最后一位干掉
            num/=10;
        }while(num!=0);

        sc.close();
    }
}

2.3. for循环

引入

public static void main(String[] args) {
    /*
    * 语法特点
    * 初始值 循环条件 迭代都可以放在小括号中
    * 初始值 循环条件 迭代也都可以不放在小括号中
    * 如果初始值放在for循环之外 那么 初始值的使用范围比较大 在for循环之后任然可以使用
    * 如果初始值放在for循环之内 那么 初始值的使用范围比较小 在当前for循环之内可以用
    * 迭代如果放在for循环的循环体中  可以由我们自己决定什么时候执行迭代
    * 迭代如果放在for循环的小括号中 那么意味着迭代是在循环体的最后一行
    *
    * for循环书写的次数多一些
    * 因为for循环可以控制初始变量为内部的局部变量 索引它更符合高内聚 低耦合的程序设计原则
    * 高内聚  程序的模块内部连接可以特别紧密 
    * 低耦合  程序的模块和模块之间的关联越简单越好
    * */
  
    for(int i=1;i<=10;i++) {
        System.out.println(i);
    }
    int i=0;
    System.out.println(i);

}

直角三角形

平行四边形

等腰三角形

等腰梯形

求阶乘问题

从键盘录入任意整数 输出该整数的阶乘

5  >>>  5*4*3*2*1

10 >>>   10*9*8*7*6*5*4*3*2*1

求a的b次方问题

从键盘录入两个整数,a b

棋盘上得麦粒问题

象棋 16 格  

第一格子 一个麦粒  以后的每个格子都是上一个 格子麦粒的2 倍

每个麦粒 0.0001克  问麦粒的总重量  麦粒的总数量

模拟密码验证问题

1. 从键盘录入六位密码  验证密码是不是六位 如果 不是六位,提示用户重新录入 直到录入的是六位为止

2. 校验密码是否正确  三次以内输入密码正确显示欢迎  否则显示密码错误 吞卡  如果位数不对 不算做一次机会

public static void main(String[] args) {
    Scanner sc =new Scanner(System.in);
    /*判断密码是否正确*/
    for (int i=2;i>=0;i--){
        // 录入密码
        System.out.println("请输入密码");
        int code =sc.nextInt();
        while (code<100000 || code > 999999) {
            System.out.println("密码非六位,请重新录入一个六位密码");
            code =sc.nextInt();
        }
        // 假设密码正确
        if(code==123456){
            System.out.println("欢迎");
            break;
            // 假设密码不正确
        }else{
            // 没有输入机会了 吞卡
            if(i==0){
                System.out.println("三次输入错误,吞卡");
            }else{
                // 还有输入机会 那么提示用户再次输入
                System.out.println("密码有误 还有"+i+"次机会,重新录入密码");
            }
        }
    }
}

2.4. 循环控制关键字

break continue return

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟火9092

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值