JavaSE基础学习Day03

01-switch语句

  • 格式 :

switch (将要匹配的值) {
    case 值1 :
        语句体1;
        break;
    case 值2 :
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}
  • 执行流程 :

1. 拿着 () 中将要匹配的值, 跟case后面给出的选项, 逐个进行匹配
            匹配成功, 就执行对应的语句体, 再由break关键字, 结束整个switch
    
2. 如果给出的所有case, 都匹配失败了, 将会执行最后default.
  • 注意事项 :

1. case 后面的值不允许重复
2. case 后面的值只能是常量, 不能是变量
3. switch 语句 () 中可以接收的类型
​
        1). 基本数据类型 : byte short char int
        2). 引用数据类型 :
                            jdk5版本开始, 可以是枚举
                            jdk7版本开始, 可以是String字符串
                                
4. 如果省略了break, switch将会开启case穿透现象
  • 案例 :

import java.util.Scanner;
​
public class SwitchDemo2 {
    /*
        switch语句中, 省略了break关键字, 将会开启case穿透现象
        ---------------------------------------------------
​
        需求: 键盘录入一个数值, 1~5输出工作日, 6~7输出休息日
​
        情况: 多个case中, 存在着相同的代码, 这时候就可以考虑使用 case穿透来优化代码
​
        ---------------------------------------------------
​
        jdk14开始, case后面允许编写多个选项, 需要使用逗号进行分割
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        int week = sc.nextInt();
​
        switch (week) {
            case 1, 2, 3, 4, 5:
                System.out.println("工作日");
                break;
            case 6, 7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("您的输入有误");
                break;
        }
    }
}

分支语句的使用选择 :

  • if : 适用于范围性的判断

  • switch : 适用于固定值的匹配

02-for循环语句

问题 : 为什么要学习循环 ?

发现一段逻辑需要重复的执行很多次, 就可以使用循环解决

  • for循环格式 :

for(初始化语句; 判断条件; 条件控制语句) {
    循环体语句;
}
​
初始化语句 : 定义变量 (定义出变量, 准备控制循环)
判断条件 : 根据这个判断条件决定循环是否要继续
循环体语句 : 要重复执行的代码
条件控制语句 : 改变控制循环的那个变量
  • 执行流程 :

1. 执行初始化语句, 在整个循环过程中, 只执行一次
2. 执行判断条件, 看其返回结果是true, false
        false : 循环结束
        true : 进入第三步
3. 执行循环体语句
4. 执行条件控制语句
5. 回到2继续
for(int i = 1; i <= 3; i++){
    System.out.println("跑圈");
}

案例1 : 模拟计时器 ​

public class ForTest1 {
    /*
        需求: 在控制台打印 1~3 和 3~1
​
        积累思路:
                1, 用于控制循环的变量, 可以在循环体内部继续使用
                2, 循环的条件控制语句, 不要局限的认为只能是++
     */
    public static void main(String[] args) {
​
        for (int i = 1; i <= 3; i++) {
            // i = 1, 2, 3
            System.out.println(i);
        }
​
        System.out.println("------------------");
​
        for (int i = 3; i >= 1; i--) {
            // i = 3, 2, 1
            System.out.println(i);
        }
    }
}

案例2 : 求和 ​

public class ForTest3 {
    /*
        需求:求1-100之间的偶数和,并把求和结果在控制台输出
​
        积累思路: 今后只要需求涉及到求和操作, 就要联想到求和变量  int sum = 0;
     */
    public static void main(String[] args) {
        // 1. 定义求和变量sum, 准备记录求和的结果
        int sum = 0;
        // 2. 通过for循环, 获取1~100之间的每一个数字
        for (int i = 1; i <= 100; i++) {
            // 3. 在循环中加入if判断, 筛选出偶数
            if (i % 2 == 0) {
                // 4. 将每一个偶数, 和sum求和变量累加
                sum += i;
            }
        }
        // 5. 在循环结束后, 将最终的求和结果打印在控制台
        System.out.println("1~100之间的偶数和为:" + sum);
​
        System.out.println("----------------------------");
​
        int result = 0;
​
        for (int i = 2; i <= 100; i += 2) {
            // i = 2, 4, 6, 8, 10....
            result += i;
        }
​
        System.out.println("1~100之间的偶数和为:" + result);
​
​
    }
}

案例3 : 水仙花数

public class ForTest4 {
    /*
        需求:在控制台输出所有的“水仙花数”

                1. 水仙花数, 是三位数
                2. 个位立方 + 十位立方 + 百位立方 == 原数据
     */
    public static void main(String[] args) {

        // 1. 通过循环, 获取到所有的三位数
        for (int i = 100; i <= 999; i++) {
            // i : 每一个三位数
            // 2. 将每一个三位数拆分出个位,十位,百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;
            // 3. 加入if筛选
            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
                // 4. 打印水仙花数
                System.out.println(i);
            }
        }

    }
}

案例4 : 统计思想

public class ForTest6 {
    /*
        需求:在控制台打印出所有的水仙花数, 要求一行中, 展示两个数字

                    153 370
                    371 407

        铺垫知识点 :
                    System.out.println();  : 打印数据后, 有换行操作
                    System.out.print();    : 打印数据后, 没有换行

    */
    public static void main(String[] args) {

        // 1. 定义计数器变量, 用于统计打印了几个数字
        int count = 0;

        for (int i = 100; i <= 999; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;

            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
                System.out.print(i + " ");
                // 2. 每打印一个, 计数器增长一次
                count++;
                // 3. 每一次增长, 都要去判断, 是否应该换行
                if (count % 2 == 0) {
                    // 换行
                    System.out.println();
                }
            }
        }

    }
}

循环嵌套 :

  • 在循环中, 继续编写循环语句

  • 阅读循环嵌套代码的思路 : 先看懂内循环, 然后再看外循环

for(int i = 1; i <= 3; i++){
	for(int j = 1; j <= 5; j++){
		System.out.println("HelloWorld");
	}
}
  • 练习 :

打印九九乘法表

public class ForTest8 {
    /*
        需求: 在控制台打印出99乘法表

        1*1=1
        1*2=2	2*2=4
        1*3=3	2*3=6	3*3=9
        1*4=4	2*4=8	3*4=12	4*4=16
        1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
        ...

        *号左边的数据 : 每一行, 都是从1开始逐个 + 1增长                   j
        *号右边的数据 : 每一行中, 乘号右侧的数据, 都是固定不变的            i


        1. 9行9列的矩形
        2. 改进为直角三角形
        3. 改进为99乘法表

     */
    public static void main(String[] args) {
        for(int i = 1; i <= 9; i++){
            for(int j = 1; j <= i; j++){
                System.out.print(j + "*" + i + "=" + j*i + "\t");
            }
            System.out.println();
        }
    }
}

03-while循环语句

  • 格式

初始化语句;
while(判断条件){
	循环体语句;
	条件控制语句;
}
  • 执行流程 :

1. 执行初始化语句, 在整个循环过程中, 只执行一次
2. 执行判断条件, 看其返回结果是true, false
		false : 循环结束
		true : 进入第三步
3. 执行循环体语句
4. 执行条件控制语句
5. 回到2继续
int i = 1;
while(i <= 10){
	System.out.println("HelloWorld");
	i++;
}

04-do...while循环 ( 了解 )

  • 格式

初始化语句;
do {
	循环体语句;
	条件控制语句;
}while(判断条件);
  • 执行流程

1. 执行初始化语句
2. 执行循环体语句
3. 执行条件控制语句
4. 执行判断条件, 看其返回结果是true, false
		false : 循环结束
		true : 回到2继续
int i = 1;
do {
	System.out.println("HelloWorld");
	i++;
}while(i <= 10);

05-三种循环的区别

  • for , while : 先判断, 后执行

  • do...while : 先执行, 后判断


for : 用于控制循环的那个变量, 因为归属于for的语法结构, 在循环结束后, 就会从内存中释放, 不能继续使用了

for(int i = 1; i <= 5; i++){

}

System.out.println(i);		// 编译错误
while : 用于控制循环的那个变量, 不归属于while的语法结构, 在循环结束后, 可以继续使用

int i = 1;
while(i <= 10){
	System.out.println("HelloWorld");
	i++;
}

System.out.println(i);		// 可以使用
  • 结论 : 本质来说, for循环和while循环, 没有区别

  • for能够实现的需求, while都能实现, 反之也是一样

06-跳转控制语句

  • break : 结束循环, 结束switch

    • break 只能在循环和switch里面使用

  • continue : 跳过本次循环, 继续下一次

    • continue 只能在循环中使用

  • 共同的注意事项 : break, continue 下面不允许写代码, 因为执行不到, 属于无效的代码

  • 细节 : break, continue, 如果遇到了循环嵌套, 默认只能操作, 自己所在的那一层循环

    • 问题 : 能不能控制一下?

    • 回答 : 可以, 需要使用标号

public class LoopDemo2 {
    /*
        注意: 如果遇到了循环的嵌套, break, continue, 只能操作自己所在的循环

        问题: 能不能控制 break, continue, 操作指定的循环呢 ?
        回答: 可以, 需要使用标号技术
     */
    public static void main(String[] args) {


        lo:
        for (int i = 1; i <= 5; i++) {

            for (int j = 1; j <= 3; j++) {

                if (j == 2) {
                    break lo;
                }

                System.out.println("程序员");
            }

        }

    }
}

07-Random产生随机数

import java.util.Random;

public class RandomTest {
	public static void main(String[] args){
		Random r = new Random();
        // 产生0~9的随机数
	    int num1 = r.nextInt(10);
		// 产生1~100的随机数
        int num2 = r.nextInt(100) + 1;
        // 产生20~80的随机似乎
        int num3 = r.nextInt(61) + 20;
    }
}

实现一个猜数字小游戏 

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

public class RandomTest {
    /*
        需求: 实现猜数字小游戏

            1. 产生一个1~100之间的随机数, 作为要猜的数据     randomNumber
            2. 键盘录入用户所猜的数据      scNumber
            3. 比对
     */
    public static void main(String[] args) {

        Random r = new Random();
        Scanner sc = new Scanner(System.in);

        // 1. 产生一个1~100之间的随机数, 作为要猜的数据
        int randomNumber = r.nextInt(100) + 1;

        while (true) {
            System.out.println("请输入:");
            // 2. 键盘录入用户所猜的数据
            int scNumber = sc.nextInt();

            // 3. 比对
            if (scNumber > randomNumber) {
                System.out.println("猜大了");
            } else if (scNumber < randomNumber) {
                System.out.println("猜小了");
            } else {
                System.out.println("恭喜, 猜中了!");
                break;
            }
        }

        System.out.println("感谢您的使用, 再见!");

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值