day04 选择结构和循环结构

选择结构和循环结构

1. 变量的命名规范

字下美人数骆驼:可以以字母、下划线、美元符号、人民币符号开头,可以包含数字,不能以数字开头,驼峰命名,见名知义有意义 举例:studentAgeAndName

字:字母

下:下划线

美:美元符号

人:人民币符号

数:数字

骆驼:驼峰命名

/**
 * @author WHD
 * @description TODO
 * @date 2022/9/3 9:26
 *
 *  变量的命名规范:字下美人数骆驼:可以以字母、下划线、美元符号、人民币符号开头,
 *  可以包含数字,不能以数字开头,
 *  驼峰命名,见名知义有意义  举例:studentAgeAndName
 *
 *  实际开发中 变量的名称要求统一使用单词 不能使用下划线 美元符号 人民币等特殊符号
 */
public class Test1 {
    public static void main(String [] args){
        int a = 10;
        System.out.println(a);

        int _b = 33;
        System.out.println(_b);

        int $c = 66; // $:英文模式下 shift + 4
        System.out.println($c);

        int ¥d = 77; //¥:中文模式下  shift + 4
        System.out.println(¥d);


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

        int e1 = 5645;

        System.out.println(e1);

        int a1b2 = 2356;

        System.out.println(a1b2);

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

        int a3d = 66;

        System.out.println(a3d);


        String studentName = "赵四";

        String sn = "赵四";

    }

}

2. 包的概念

什么是包?

包是用于管理Java文件以及class文件的文件夹

包的命名规范:全部小写,域名倒置,不能以点开头或者结尾,可以包含点,每存在一个点,表示一个子文件夹

www.baidu.com --> com.baidu.xxxx(具体包名)

包中的java文件 必须在第一行 使用package关键字声明此类所在包

package com.atguigu.test1;  // 包的声明 表示此java文件位于此包中,包的声明永远在java文件的第一句

public class Test1 {
    public static void main(String[] args) {
        System.out.println("hello package");
    }
}

3. Scanner工具类

Scanner 单词:扫描

Scanner类的作用:可以用于接收用户输入的信息 此类位于java.util这个包中 如果我们需要使用此类 必须使用import关键字导包

只要当前java文件 与我们使用类 不再同一个包 就必须导包

此类提供了如下功能 分别用于接收不同类型的数据

next() 接收字符串

nextInt() 接收int类型整数

nextDouble() 接收double类型浮点数

nextBoolean() 接收boolean类型数据

使用对应的功能接收对应类型的数据 如果类型不符合 将报异常 InputMismatchException 将中断程序

注意:没有nextChar()

package com.atguigu.test2;

import java.util.Scanner;

/**
 * Scanner 类的使用 必须使用import导包 导包语句书写在类声明之前 包声明之后
 * java.util.Scanner 用于接收用户输入的信息
 * 此类提供了如下功能 分别用于接收不同类型的数据
 * next() 接收字符串
 * nextInt() 接收int类型整数
 * nextDouble() 接收double类型浮点数
 * nextBoolean() 接收boolean类型数据
 *
 * 使用对应的功能接收对应类型的数据 如果类型不符合 将报异常 InputMismatchException
 *
 * 注意:没有nextChar()
 * */
public class Test1 {
    public static void main(String[] args) {
        // 第一步 创建一个Scanner类型的变量
        Scanner input = new Scanner(System.in);

        // 第二步 提示用户输入
        System.out.print("请输入你的名字:");

        // 第三步 接收用户输入信息 并且存放到名为 name的变量中
        String name = input.next();

        // 第四部 打印用户输入信息
        System.out.println("您输入的名字为:" + name);

        // 其他数据类型 重复以上第2,3,4步即可
        System.out.print("请输入你的年龄:");
        int age = input.nextInt();

        System.out.println("您输入的年龄为:" + age);

        System.out.print("请输入你的身高:");

        double height = input.nextDouble();
        System.out.println("你输入的身高是:" + height);

        System.out.print("请输入你是否是男生:");
        boolean isBoy = input.nextBoolean();

        System.out.println(isBoy == true ? "男生" : "女生");
        // 布尔类型变量 在判断取值的时候 直接写书名 等同于 == true
        System.out.println(isBoy ? "男生" : "女生");
    }
}

4. 选择结构

4.1 if结构

语法:
if(布尔表达式){
​ //代码块1
}

后续代码…
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再执行后续代码。
结果为false,则跳过代码块1,直接执行后续代码。

package com.atguigu.test3;

/**
 * 根据变量判断大小关系是否成立
 * */
public class Test1 {
    public static void main(String[] args) {
        int a = 20;
        int b = 30;

        if (a < b){
            System.out.println("a大于b条件成立");
        }

        System.out.println("程序结束");
    }
}

package com.atguigu.test3;

import java.util.Scanner;

/**
 * 需求:根据用户输入的年龄 判断是否成年
 * */

public class Test2 {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("请输入您的年龄:");
        int age = scan.nextInt();

        if(age >= 18){
            System.out.println("成年了");
        }
        System.out.println("程序结束");
    }
}

4.2 if-else结构

语法:
if(布尔表达式){
​ //代码块1
}else{
​ //代码块2
}

后续代码…
执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再退出整个结构,执行后续代码。
结果为false,则先执行代码块2,再退出整个结构,执行后续代码。

else结构不能单独出现,目前必须结合if结构

package com.atguigu.test4;

/**
 * 使用if-else结构 完善程序 每种情况都有信息打印
 * */

public class Test1 {
    public static void main(String[] args) {
        int a = 40;
        int b = 30;

        if (a < b){
            System.out.println("a小于b条件成立");
        }else{
            System.out.println("a小于b条件不成立");
        }
        System.out.println("程序结束");
    }
}

package com.atguigu.test4;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("请输入您的年龄:");

        int age = input.nextInt();

        if (age >= 18){
            System.out.println("成年了");
        }else{
            System.out.println("未成年");
        }

        System.out.println("程序结束");
    }
}

4.3 多重if

多重if 用来处理多重情况

else-if不能单独出现 必须结合if结构

else结构不能单独出现 必须结合 if 或者 else-if结构

else结构根据需求是否书写

多重if用于处理某个值处于连续区间的情况 使用多重if实现 条件必须是有序的

升序 或者 降序

package com.atguigu.test5;

import java.util.Scanner;

/**
 * 多重if 用来处理多重情况
 *
 * else-if不能单独出现 必须结合if结构
 * else结构不能单独出现 必须结合if或者多重if结构
 * else结构根据需求是否书写
 *
 * 多重if用于处理某个值处于连续区间的情况 使用多重if实现 条件必须是有序的
 * 升序或者降序
 *
 *  需求:根据用户输入的分数区间判断等级
 *  0-59 不及格
 *  60-70 中等
 *  71-80 良好
 *  81-90 优秀
 *  91-100 很棒
 *
 * */

public class Test1 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("请输入您的分数:");
        int score = input.nextInt();

        if(score >= 91 && score <= 100){
            System.out.println("很棒");
        }else if(score >= 81 && score <= 90){
            System.out.println("优秀");
        }else if(score >= 71 && score <= 80){
            System.out.println("良好");
        }else if(score >= 60 && score <= 70){
            System.out.println("中等");
        }else{
            System.out.println("不合格");
        }
        System.out.println("程序结束");
    }
}

package com.atguigu.test5;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("请输入您的分数:");

        int score = input.nextInt();

        if(score >= 0 && score <= 100){
            if(score >= 91 && score <= 100){
                System.out.println("很棒");
            }else if(score >= 81 && score <= 90){
                System.out.println("优秀");
            }else if(score >= 71 && score <= 80){
                System.out.println("良好");
            }else if(score >= 60 && score <= 70){
                System.out.println("中等");
            }else{
                System.out.println("不合格");
            }
        }else{
            System.out.println("输入分数有误!");
        }
        System.out.println("程序结束");
    }
}

4.4 嵌套if

语法:
if(外层表达式){
​ if(内层表达式){
​ //内层代码块1
​ }else{
​ //内层代码块2
​ }
}else{
​ //外层代码块
}

执行流程:
当外层条件满足时,再判断内层条件。

注意:
一个选择结构中,可嵌套另一个选择结构。
嵌套格式正确的情况下,支持任意组合。

判断字符串内容是否等于某个内容 不能使用==比较,必须使用equals方法,使用方式 sex.equals(“比较内容”)

package com.atguigu.test6;

import java.util.Scanner;

/**
 *  嵌套if  :一个完整的if结构中 嵌套另外一个if结构
 *
 *  需求:学校举行百米跑步比赛 跑步时间小于14秒 可以进入决赛 然后再根据性别 进行男子/女子 分组
 * */

public class Test1 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("请输入您的跑步时间:");

        double time = input.nextDouble();
        System.out.print("请输入您的性别:");
        String sex = input.next();
        if(time < 14){

            System.out.println("恭喜你进入决赛");
            // 接下来对性别判断 实现分组
            // 判断字符串内容是否等于某个内容 不能使用==比较
            // 必须使用equals方法
            // 使用方式 sex.equals("比较内容")
            if(sex.equals("男")){
                System.out.println("恭喜你进入男子组");
            }else{
                System.out.println("恭喜你进入女子组");
            }
        }else{
            System.out.println("继续加油");
        }
        System.out.println("程序结束");
    }
}

package com.atguigu.test6;

import java.util.Scanner;

/**
 * 嵌套if  :一个完整的if结构中 嵌套另外一个if结构
 * <p>
 * 需求:学校举行百米跑步比赛 跑步时间小于14秒 可以进入决赛 然后再根据性别 进行男子/女子 分组
 * <p>
 * 优化两个问题:
 * 1.如果用户时间不能进入决赛 则不需要输入性别
 * 2.如果用户输入的性别不对 则提示性别不合适
 */
public class Test2 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("请输入您的跑步时间:");
        double time = input.nextDouble();

        if (time < 14) {
            System.out.println("恭喜你进入决赛!");
            System.out.print("请输入您的性别:");
            String sex = input.next();
            if (sex.equals("男")) {
                System.out.println("恭喜你进入男子组");
            } else if (sex.equals("女")) {
                System.out.println("恭喜你进入女子组");
            } else {
                System.out.println("性别不合适,请等待下一届");
            }
        } else {
            System.out.println("继续加油");
        }
    }
}

5. 选择结构补充

if语句块只有一条执行语句时,一对{}可以省略,但建议保留

当多重if结构是“多选一”时,最后的else是可选的,根据需要可以省略

当多重if结构多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓

当多个条件是“包含”关系时,条件必须为升序或者降序

package com.atguigu.test7;

/**
 * if语句只有一条执行语句时,一对{}可以省略,但建议保留
 * */

public class Test1 {
    public static void main(String[] args) {

        int a = 10;
        int b = 5;

        if (a < b)
            System.out.println("a大于b条件成立");

        System.out.println("程序结束");
    }
}

6. switch结构

语法:
switch(变量|表达式){
​ case 值1:
​ 逻辑代码1;
​ case 值2:
​ 逻辑代码2;
​ case 值n:
​ 逻辑代码n;
​ default:
​ 未满足时的逻辑代码;
}

可判断的类型:
byte、short、int、char、String(JDK7+)

执行流程:
如果变量中的值等于值1,则执行逻辑代码1。
如果变量中的值等于值2,则执行逻辑代码2。
如果变量中的值等于值n,则执行逻辑代码n。
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。

注意:所有case的取值不可相同。

switch 结构 支持的数据类型:byte short int char String(JDK7) 枚举

switch通常用于处理某个值属于固定等值的情况

break用于switch中 表示 跳出switch结构 如需每一个case都相互独立 则需要在每个case后加上break

default根据需求是否书写 default位置不固定 但是按照规范写在最后case之后

如需每种情况独立 default之后也要加上break

package com.atguigu.test7;

import java.util.Scanner;

/**
 * switch 结构 支持的数据类型:byte short int char String(JDK7) 枚举
 * switch通常用于处理某个值属于固定等值的情况
 *
 *  需求:根据名次进行奖励
 *      第一名:奖励夏令营三天
 *      第二名:奖励苹果13袋
 *      第三名:奖励笔记本一本
 *      第四名:口头表扬一次
 *      其他名次:继续加油
 *
 * break用于switch中 表示 跳出switch结构 如需每一个case都相互独立 则需要在每个case后加上break
 *
 * default根据需求是否书写 default位置不固定 但是按照规范写在最后一个case之后
 * 如需每种情况独立 default之后也需加上break
 *
 * */
public class Test2 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.print("请输入您的名次:");

        int num = input.nextInt();

        switch (num){
            case 1:
                System.out.println("奖励夏令营三天");
                break;
            case 2:
                System.out.println("奖励苹果13");
                break;
            case 3:
                System.out.println("奖励笔记本一本");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            default:
                System.out.println("继续加油");
        }
        System.out.println("程序结束");
    }

}

package com.atguigu.test7;

import java.util.Scanner;

/**
 *  switch 结构  支持的数据类型:byte short int char String(JDK7) 枚举
 *  switch通常用于处理某个值属于固定等值的情况
 *
 *  需求:根据名次进行奖励
 *      第一名:奖励夏令营三天
 *      第二名:奖励夏令营三天
 *      第三名:奖励夏令营三天
 *      第四名:口头表扬一次
 *      其他名次:继续加油
 * */
public class Test3 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.print("请输入您的名次:");

        int num = input.nextInt();

        switch (num){
            case 1:
            case 2:
            case 3:
                System.out.println("奖励夏令营三天");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            default:
                System.out.println("继续加油");
        }
        System.out.println("程序结束");
    }
}

package com.atguigu.test7;

/**
 * switch支持的各种类型演示:byte short int char String(JDK7) 枚举
 * */
public class Test4 {
    public static void main(String[] args) {

        byte b1 = 1;

        short s1 = 2;

        int i1 = 3;

        char c1 = '中';

        String str1 = "abc";

        switch (str1){
            case "a":
                System.out.println("变量取值为1");
                break;
            case "b":
                System.out.println("变量取值为2");
                break;
            case "abc":
                System.out.println("变量取值为3");
                break;
            case "def":
                System.out.println("变量取值为4");
                break;
            default:
                System.out.println("变量为其他取值,执行default");
                break;
        }
        System.out.println("程序结束");
    }
}

7. 多重if和switch结构对比

两种结构都可以用于处理多种条件的判断

多重if适用于某个值处于连续的区间的情况 比如 0~60 60~70 70~80 ……

switch适用于某个值属于固定等值的情况 比如 1 2 3 4

8.循环结构

8.1 while循环

while ( 循环条件 ) {

​ 循环操作

}

任何循环都有四个必不可少的部分:

1.计数器初始化

2.循环条件

3.循环体

4.计数器变化

目前 我们使用while循环来处理循环次数确定的情况 while循环还可以用于处理循环次数不确定的情况

通常用于处理循环次数不确定的情况 因为循环次数确定 有更简洁的循环结构 for

package com.atguigu.test8;
/**
 * 使用打印语句打印20句好好学习
 * */
public class Test1 {
    public static void main(String[] args) {
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");

        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
        System.out.println("好好学习");
    }
}

package com.atguigu.test8;
/**
 * 使用while循环打印10000遍好好学习
 *
 * 任何循环都有四个必不可少的部分:
 *  1.计数器初始化
 *  2.循环条件
 *  3.循环体
 *  4.计数器变化
 *
 *  目前 我们使用while循环来处理循环次数确定的情况 while循环还可以用于处理循环次数不确定的情况
 *  通常用于处理循环次数不确定的情况 因为循环次数确定 有更简洁的循环结构 for循环
 * */
public class Test2 {
    public static void main(String[] args) {

        int i = 1;  // 计数器初始化

        while (i <= 10000){  // 循环条件
            System.out.println("第" + i + "遍好好学习");  // 循环体
            i++;  // 计数器变化
        }
        System.out.println("程序结束");
    }
}

package com.atguigu.test8;

import java.util.Scanner;

/***
 *  需求:老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行。
*  老师给赵四安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
 * */
public class Test3 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.print("请输入学习任务是否合格? y/n:");
        String answer = input.next();

        while (answer.equals("n")){
            System.out.println("学习任务不合格");
            System.out.println("上午阅读教材");
            System.out.println("下午上机编程");

            System.out.print("请输入学习任务是否合格? y/n:");
            answer = input.next();
        }

        System.out.println("恭喜你 完成任务!");

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值