01分支语句switch

  1. public class Demo1Switch {
  2. /*
  3. 格式:
  4. switch(表达式) {
  5. case 值1:
  6. 语句体1;
  7. break;
  8. case 值2:
  9. 语句体2;
  10. break;
  11. default:
  12. 语句体n+1;
  13. [break;]
  14. }
  15. 1. 首先计算表达式的值。
  16. 2. 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句
  17. 在执行的过程中,遇到break就会结束。
  18. 3. 如果所有的case后面的值和表达式的值都不匹配
  19. 就会执行default里面的语句体,然后程序结束掉。
  20. 需求: 根据week变量记录的数值, 程序输入对应的星期
  21. 例如: int week = 1; 星期一
  22. */
  23. public static void main(String[] args){
  24. int week = 100;
  25. switch(week){
  26. case 1 :
  27. System.out.println("星期一");
  28. break;
  29. case 2 :
  30. System.out.println("星期二");
  31. break;
  32. case 3 :
  33. System.out.println("星期三");
  34. break;
  35. case 4 :
  36. System.out.println("星期四");
  37. break;
  38. case 5 :
  39. System.out.println("星期五");
  40. break;
  41. case 6 :
  42. System.out.println("星期六");
  43. break;
  44. case 7 :
  45. System.out.println("星期日");
  46. break;
  47. default:
  48. System.out.println("您的数据有误");
  49. break;
  50. }
  51. }
  52. }

02switch案例减肥计划

  1. import java.util.Scanner;
  2. public class TestSwitch {
  3. /*
  4. 需求:键盘录入星期数,显示今天的减肥活动。
  5. 周一:跑步
  6. 周二:游泳
  7. 周三:慢走
  8. 周四:动感单车
  9. 周五:拳击
  10. 周六:爬山
  11. 周日:好好吃一顿
  12. 分析:
  13. 1. 键盘录入星期数据,使用变量接收
  14. 2. 多情况判断,采用switch语句实现
  15. 3. 在不同的case中,输出对应的减肥计划
  16. */
  17. public static void main(String[] args){
  18. // 1. 键盘录入星期数据,使用变量接收
  19. Scanner sc = new Scanner(System.in);
  20. System.out.println("请输入");
  21. int week = sc.nextInt();
  22. // 2. 多情况判断,采用switch语句实现
  23. switch(week){
  24. // 3. 在不同的case中,输出对应的减肥计划
  25. case 1:
  26. System.out.println("跑步");
  27. break;
  28. case 2:
  29. System.out.println("游泳");
  30. break;
  31. case 3:
  32. System.out.println("慢走");
  33. break;
  34. case 4:
  35. System.out.println("动感单车");
  36. break;
  37. case 5:
  38. System.out.println("拳击");
  39. break;
  40. case 6:
  41. System.out.println("爬山");
  42. break;
  43. case 7:
  44. System.out.println("好好吃一顿");
  45. break;
  46. default:
  47. System.out.println("您的输入有误");
  48. break;
  49. }
  50. }
  51. }

03switch语句case穿透

  1. import java.util.Scanner;
  2. public class Demo2Switch {
  3. /*
  4. 需求: 键盘录入星期数,输出工作日、休息日
  5. (1-5)工作日,(6-7)休息日
  6. case穿透是如何产生的?
  7. 如果switch语句中,case省略了break语句, 就会开始case穿透.
  8. 现象:
  9. 当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行
  10. 直到看见break,或者将整体switch语句执行完毕,才会结束。
  11. */
  12. public static void main(String[] args){
  13. Scanner sc = new Scanner(System.in);
  14. System.out.println("请输入星期数:");
  15. int week = sc.nextInt();
  16. switch(week){
  17. case 1:
  18. case 2:
  19. case 3:
  20. case 4:
  21. case 5:
  22. System.out.println("工作日");
  23. break;
  24. case 6:
  25. case 7:
  26. System.out.println("休息日");
  27. break;
  28. default:
  29. System.out.println("您的输入有误");
  30. break;
  31. }
  32. }
  33. }

04循环语句for循环

  1. public class Demo1For {
  2. /*
  3. 格式:
  4. for (初始化语句;条件判断语句;条件控制语句) {
  5. 循环体语句;
  6. }
  7. 执行流程:
  8. 执行初始化语句
  9. 执行条件判断语句,看其结果是true还是false
  10. 如果是false,循环结束
  11. 如果是true,继续执行
  12. 执行循环体语句
  13. 执行条件控制语句
  14. 回到②继续
  15. 需求: 程序模拟折返跑3次的过程
  16. */
  17. public static void main(String[] args){
  18. for(int i = 1; i <= 3; i++){
  19. System.out.println("折返跑");
  20. }
  21. }
  22. }

05循环输出数据1-5和5-1

  1. public class Demo2For {
  2. /*
  3. 需求:在控制台输出1-5和5-1的数据
  4. 分析:
  5. 1. 从1开始到5结束,设置初始化从1开始
  6. 2. 设置判断条件为没有到5的时候继续执行,执行到超过5程序结束
  7. 3. 从1到5,每次增加1,设置条件控制每次+1
  8. 4. 将反复进行的事情写入循环结构内部,打印对应数据
  9. 注意:
  10. 1. 循环中, 控制循环的变量, 可以作为逻辑组织到循环体中进行使用的.
  11. 2. 循环的 条件控制语句, 不要局限的认为只能是++
  12. */
  13. public static void main(String[] args) {
  14. // 1. 从1开始到5结束,设置初始化从1开始
  15. // 2. 设置判断条件为没有到5的时候继续执行,执行到超过5程序结束
  16. // 3. 从1到5,每次增加1,设置条件控制每次+1
  17. for(int i = 1; i <= 5; i++){
  18. // 4. 将反复进行的事情写入循环结构内部,打印对应数据
  19. System.out.println(i); // 1 2 3
  20. }
  21. System.out.println("--------------");
  22. for(int i = 5; i >= 1; i--){
  23. System.out.println(i); // 5 4 3..
  24. }
  25. }
  26. }

06循环案例求1-5的数据和

  1. public class Demo3For {
  2. /*
  3. 需求:求1-5之间的数据和,并把求和结果在控制台输出
  4. 分析:
  5. 1. 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
  6. 2. 在循环中初始化一个变量从1开始,不断++,增长到5
  7. 3. 循环的过程中,将能够代表(1-5)的i变量和sum进行累加
  8. 4. 当循环执行完毕时,将最终数据打印出来
  9. 注意:
  10. 如果在今后的需求中, 看到了xxxx求和的字样, 就要定义一个求和变量
  11. int sum = 0;
  12. */
  13. public static void main(String[] args) {
  14. // 1. 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
  15. int sum = 0;
  16. // 2. 在循环中初始化一个变量从1开始,不断++,增长到5
  17. for(int i = 1; i <= 5; i++){
  18. // 3. 循环的过程中,将能够代表(1-5)的i变量和sum进行累加
  19. //sum = sum + i;
  20. sum += i;
  21. }
  22. // 4. 当循环执行完毕时,将最终数据打印出来
  23. System.out.println("数据1-5的和为:" + sum);
  24. }
  25. }

07循环求1-100的偶数和

  1. public class Demo4For {
  2. /*
  3. 需求:求1-100之间的偶数和,并把求和结果在控制台输出
  4. 分析:
  5. 1. 需求是要求和, 定义求和变量.
  6. 2. 循环中获取1-100之间的每一个数值
  7. 3. 循环的过程中,对每一个数值进行if判断, 判断是否是偶数
  8. 4. 是偶数的话, 跟求和变量累加
  9. 5. 循环结束后, 打印最终结果
  10. */
  11. public static void main(String[] args) {
  12. // 1. 需求是要求和, 定义求和变量.
  13. int sum = 0;
  14. // 2. 循环中获取1-100之间的每一个数值
  15. for(int i = 1; i <= 100; i++){
  16. // 3. 循环的过程中,对每一个数值进行if判断, 判断是否是偶数
  17. if(i % 2 == 0){
  18. // 4. 是偶数的话, 跟求和变量累加
  19. sum += i;
  20. }
  21. }
  22. // 5. 循环结束后, 打印最终结果
  23. System.out.println("1-100之间的偶数和为:" + sum);
  24. }
  25. }

08for循环案例-水仙花数

  1. public class Demo5For {
  2. /*
  3. 需求:在控制台输出所有的 “水仙花数”
  4. 水仙花数是一个三位数
  5. 水仙花数的个位、十位、百位的数字立方和等于原数
  6. 分析:
  7. 1. 通过循环获取所有的三位数100-999
  8. 2. 将每一个三位数拆分为个位, 十位, 百位
  9. 3. 加入if判断条件, 计算是否是水仙花数, 是的话输出打印.
  10. */
  11. public static void main(String[] args) {
  12. // 1. 通过循环获取所有的三位数100-999
  13. for(int i = 100; i <= 999; i++){
  14. // 2. 将每一个三位数拆分为个位, 十位, 百位
  15. int ge = i % 10;
  16. int shi = i / 10 % 10;
  17. int bai = i / 10 / 10 % 10;
  18. // int bai = i / 100;
  19. // 3. 加入if判断条件, 计算是否是水仙花数, 是的话输出打印.
  20. if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){
  21. System.out.println(i);
  22. }
  23. }
  24. }
  25. }

09for循环案例 每行打印两个水仙花数(统计)

  1. public class Demo6For {
  2. /*
  3. 需求:在控制台输出所有的“水仙花数”,要求每行打印2个
  4. System.out.print (打印内容); 打印后不换行
  5. System.out.println(打印内容); 打印后换行
  6. 分析:
  7. 1. 定义变量count,用于保存“打印过”的数量,初始值为0
  8. 2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让count变量+1,记录打印过的数量
  9. 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行。
  10. */
  11. public static void main(String[] args){
  12. // 1. 定义变量count,用于保存“打印过”的数量,初始值为0
  13. int count = 0;
  14. for(int i = 100; i <= 999; i++){
  15. int ge = i % 10;
  16. int shi = i / 10 % 10;
  17. int bai = i / 10 / 10 % 10;
  18. if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){
  19. // 2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让count变量+1,记录打印过的数量
  20. System.out.print(i + " ");
  21. count++;
  22. // 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行
  23. if(count % 2 == 0){
  24. System.out.println();
  25. }
  26. }
  27. }
  28. }
  29. }

10while循环

  1. public class Demo1While {
  2. /*
  3. 完整格式:
  4. 初始化语句;
  5. while(条件判断语句) {
  6. 循环体语句;
  7. 条件控制语句;
  8. }
  9. 执行流程:
  10. 1. 执行初始化语句
  11. 2. 执行条件判断语句,看其结果是true还是false
  12. 如果是false,循环结束
  13. 如果是true,继续执行
  14. 3. 执行循环体语句
  15. 4. 执行条件控制语句
  16. 5. 回到②继续
  17. 需求: 在控制台打印1-100之间所有的数
  18. 需求: 在控制台打印520次 I LOVE YOU
  19. */
  20. public static void main(String[] args) {
  21. /*
  22. for(int i = 1; i <= 100; i++){
  23. System.out.println(i);
  24. }
  25. */
  26. int i = 1;
  27. while(i <= 520){
  28. System.out.println("I LOVE YOU");
  29. i++;
  30. }
  31. }
  32. }

11while循环案例-珠穆朗玛峰

  1. public class Demo2While {
  2. /*
  3. 需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。
  4. 请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
  5. 步骤:
  6. 1. 定义计数器变量, 准备用于统计折叠的次数
  7. 2. 准备纸张厚度变量, 珠峰高度变量
  8. 3. 折叠的过程是多次, 所以使用循环, 不确定循环次数, 使用while循环
  9. 进入循环的条件为(厚度没有超过珠峰的高度就折叠)
  10. 4. 每折叠一次, 计数器就要自增(查数)
  11. 5. 循环结束后, 打印计数器变量即可.
  12. */
  13. public static void main(String[] args){
  14. // 1. 定义计数器变量, 准备用于统计折叠的次数
  15. int count = 0;
  16. // 2. 准备纸张厚度变量, 珠峰高度变量
  17. double paper = 0.1;
  18. int zf = 8844430;
  19. //3. 折叠的过程是多次, 所以使用循环, 不确定循环次数, 使用while循环
  20. // 进入循环的条件为(厚度没有超过珠峰的高度就折叠)
  21. while(paper <= zf){
  22. paper *= 2;
  23. System.out.println(paper);
  24. // 4. 每折叠一次, 计数器就要自增(查数)
  25. count++;
  26. }
  27. // 5. 循环结束后, 打印计数器变量即可.
  28. System.out.println(count);
  29. }
  30. }

12循环语句 dowhile循环

  1. public class Demo1DoWhile {
  2. /*
  3. 完整格式:
  4. 初始化语句;
  5. do {
  6. 循环体语句;
  7. 条件控制语句;
  8. }while(条件判断语句);
  9. 执行流程:
  10. 1.执行初始化语句
  11. 2.执行循环体语句
  12. 3.执行条件控制语句
  13. 4. 执行条件判断语句,看其结果是true还是false
  14. 如果是false,循环结束
  15. 如果是true,继续执行
  16. 5. 回到②继续
  17. 特点:
  18. do..while循环, 无论循环条件是否满足, 都至少会执行一次循环体.
  19. 原因: do..while循环是从上到下依次执行.
  20. */
  21. public static void main(String[] args){
  22. // 需求: 在控制台打印10次黑马程序员
  23. int i = 11;
  24. do {
  25. System.out.println("黑马程序员");
  26. i++;
  27. }while(i <= 10);
  28. System.out.println(i);
  29. }
  30. }

13三种循环的区别

  1. public class Loop {
  2. /*
  3. for和while的区别:
  4. 条件控制语句所控制的自增变量
  5. 因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
  6. 条件控制语句所控制的自增变量
  7. 对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
  8. */
  9. public static void main(String[] args){
  10. for(int i = 1; i <= 5; i++){
  11. // for循环内部[定义]的变量, 在循环结束后, 就会从内存中消失
  12. System.out.println(i);
  13. }
  14. // System.out.println(i); // 错误: 找不到符号i
  15. System.out.println("--------------");
  16. for(int i = 1; i <= 10; i++){
  17. System.out.println(i);
  18. }
  19. System.out.println("--------------");
  20. // while循环
  21. int a = 1;
  22. while(a <= 5){
  23. System.out.println(a);
  24. a++;
  25. }
  26. System.out.println(a + "...");
  27. }
  28. }

14死循环

  1. public class Loop {
  2. /*
  3. for死循环格式 :
  4. for(;;){
  5. }
  6. while死循环格式 :
  7. while(true){
  8. }
  9. do..while死循环格式 :
  10. do{
  11. }while(true);
  12. 问题: 死循环有应用场景吗?
  13. 例如: 键盘录入一个1-100之间的整数
  14. 顾虑: 键盘录入是用户操作的, 用户就可能会出现一些误操作的现象
  15. */
  16. public static void main(String[] args) {
  17. /*
  18. for(;;){
  19. System.out.println("我停不下来了~");
  20. }
  21. */
  22. /*
  23. while(true){
  24. System.out.println("我停不下来了~");
  25. }
  26. */
  27. do{
  28. System.out.println("我停不下来了~");
  29. }while(true);
  30. System.out.println("看看我能被执行吗?~"); // 无法访问的语句
  31. }
  32. }

15跳转控制语句

  1. public class Demo1Continue {
  2. /*
  3. continue : 跳过某次循环体内容的执行
  4. 注意:使用是基于条件控制, 在循环内部使用.
  5. 需求: 模拟电梯上行的过程 1-24层, 4层不停.
  6. */
  7. public static void main(String[] args){
  8. for(int i = 1; i <= 24; i++){
  9. if(i == 4){
  10. continue;
  11. }
  12. System.out.println(i + "层到了~");
  13. }
  14. }
  15. }
  1. public class Demo2Break {
  2. /*
  3. break : 终止循环体内容的执行
  4. 注意:使用是基于条件控制的
  5. break语句只能在循环和switch中进行使用.
  6. 需求: 模拟20岁工作到80岁, 60岁退休.
  7. */
  8. public static void main(String[] args){
  9. for(int i = 20; i <= 80; i++){
  10. if(i == 60){
  11. break; // 结束整个循环
  12. }
  13. System.out.println(i + "岁正在上班");
  14. }
  15. }
  16. }

16减肥计划改进版-循环标号

  1. import java.util.Scanner;
  2. public class Test {
  3. /*
  4. 需求:程序运行后,用户可多次查询星期对应的减肥计划,直到输入0,程序结束
  5. 步骤:
  6. 1. 不明确用户操作几次, 使用死循环包裹业务逻辑
  7. 2. 匹配到0的时候,使用break结束循环死循环
  8. */
  9. public static void main (String[] args){
  10. lo:while(true){
  11. System.out.println("请输入您要查看的星期数:");
  12. System.out.println("(如无需继续查看,请输入0退出程序)");
  13. // 1. 键盘录入星期数据,使用变量接收
  14. Scanner sc = new Scanner(System.in);
  15. int week = sc.nextInt();
  16. // 2. 多情况判断,采用switch语句实现
  17. switch(week){
  18. // 3. 在不同的case中,输出对应的减肥计划
  19. case 0:
  20. System.out.println("感谢您的使用");
  21. break lo;
  22. case 1:
  23. System.out.println("跑步");
  24. break;
  25. case 2:
  26. System.out.println("游泳");
  27. break;
  28. case 3:
  29. System.out.println("慢走");
  30. break;
  31. case 4:
  32. System.out.println("动感单车");
  33. break;
  34. case 5:
  35. System.out.println("拳击");
  36. break;
  37. case 6:
  38. System.out.println("爬山");
  39. break;
  40. case 7:
  41. System.out.println("好好吃一顿");
  42. break;
  43. default:
  44. System.out.println("您的输入有误");
  45. break;
  46. }
  47. }
  48. }
  49. }

17Random基本使用

  1. import java.util.Random;
  2. public class Demo1Random {
  3. /*
  4. Random : 产生随机数
  5. 1. 导包 : import java.util.Random;
  6. 导包的动作必须出现在类定义的上面
  7. 2. 创建对象 : Random r = new Random();
  8. 上面这个格式里面,r 是变量名,可以变,其他的都不允许变
  9. 3. 获取随机数 : int number = r.nextInt(10); //获取数据的范围:[0,10) 包括0,不包括10
  10. 上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变
  11. 需求: 产生随机数1-10之间的
  12. */
  13. public static void main(String[] args){
  14. // 2. 创建对象
  15. Random r = new Random();
  16. for(int i = 1; i <= 10; i++){
  17. // 3. 获取随机数
  18. int num = r.nextInt(10) + 1; // 1-10
  19. System.out.println(num);
  20. }
  21. }
  22. }

18猜数字

  1. import java.util.Scanner;
  2. import java.util.Random;
  3. public class Test {
  4. /*
  5. 需求:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
  6. 当猜错的时候根据不同情况给出相应的提示
  7. 如果猜的数字比真实数字大,提示你猜的数据大了
  8. 如果猜的数字比真实数字小,提示你猜的数据小了
  9. 如果猜的数字与真实数字相等,提示恭喜你猜中了
  10. 1. 准备Random和Scanner对象, 分别用于产生随机数和键盘录入
  11. 2. 使用Random产生一个1-100之间的数, 作为要猜的数
  12. 3. 键盘录入用户猜的的数据
  13. 4. 使用录入的数据(用户猜的数据)和随机数(要猜的数据)进行比较, 并给出提示
  14. 5. 以上内容需要多次进行, 但无法预估用户输入几次可以猜测正确, 使用while(true)死循环包裹
  15. 6. 猜对之后, break结束.
  16. */
  17. public static void main(String[] args){
  18. // 1. 准备Random和Scanner对象, 分别用于产生随机数和键盘录入
  19. Random r = new Random();
  20. Scanner sc = new Scanner(System.in);
  21. // 2. 使用Random产生一个1-100之间的数, 作为要猜的数
  22. int randomNum = r.nextInt(100) + 1;
  23. // 5. 以上内容需要多次进行, 但无法预估用户输入几次可以猜测正确, 使用while(true)死循环包裹
  24. while(true){
  25. // 3. 键盘录入用户猜的的数据
  26. System.out.println("请输入您猜的数据:");
  27. int num = sc.nextInt();
  28. // 4. 使用录入的数据(用户猜的数据)和随机数(要猜的数据)进行比较, 并给出提示
  29. if(num > randomNum){
  30. System.out.println("猜大了");
  31. }else if(num < randomNum){
  32. System.out.println("猜小了");
  33. }else{
  34. // 6. 猜对之后, break结束.
  35. System.out.println("恭喜,猜中了");
  36. break;
  37. }
  38. }
  39. System.out.println("感谢您的使用");
  40. }
  41. }