Java基础Switch和循环控制(二)

简介: Java基础Switch和循环控制(二)

3. while循环



3.1 循环语句-while循环


while循环完整格式:


初始化语句;


while (条件判断语句) {
  循环体语句;
    条件控制语句;
}


while循环执行流程:


①执行初始化语句


②执行条件判断语句,看其结果是true还是false


如果是false,循环结束


如果是true,继续执行


③执行循环体语句


④执行条件控制语句


⑤回到②继续


示例代码:


public class WhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
  //for循环实现
  for(int i=1; i<=5; i++) {
    System.out.println("HelloWorld");
  }
  System.out.println("--------");
  //while循环实现
  int j = 1;
  while(j<=5) {
    System.out.println("HelloWorld");
    j++;
  }
    }
}


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


需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

示例代码:


public class WhileTest {
    public static void main(String[] args) {
  //定义一个计数器,初始值为0
  int count = 0;
  //定义纸张厚度
  double paper = 0.1;
  //定义珠穆朗玛峰的高度
  int zf = 8844430;
  //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
  //折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
  while(paper <= zf) {
    //循环的执行过程中每次纸张折叠,纸张的厚度要加倍
    paper *= 2;
    //在循环中执行累加,对应折叠了多少次
    count++;
  }
  //打印计数器的值
  System.out.println("需要折叠:" + count + "次");
    }
}


4. 循环细节



4.1 循环语句-dowhile循环


完整格式:


初始化语句;


do {
  循环体语句;
  条件控制语句;
}while(条件判断语句);


执行流程:


① 执行初始化语句


② 执行循环体语句


③ 执行条件控制语句


④ 执行条件判断语句,看其结果是true还是false


  • 如果是false,循环结束


  • 如果是true,继续执行


⑤ 回到②继续


示例代码:


public class DoWhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
  //for循环实现
  for(int i=1; i<=5; i++) {
    System.out.println("HelloWorld");
  }
  System.out.println("--------");
  //do...while循环实现
  int j = 1;
  do {
    System.out.println("HelloWorld");
    j++;
  }while(j<=5);
    }
}


4.2 三种循环的区别


  • 三种循环的区别


for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)

do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)


  • for循环和while的区别


条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了


条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用


死循环(无限循环)的三种格式


for(;;){}
while(true){}
do {} while(true);


4.3 死循环


死循环格式


for死循环格式 :


for(;;){
}


while死循环格式 :


while(true){
}


do..while死循环格式 :


do{
}while(true);


死循环案例


/*
  问题: 死循环有应用场景吗?
    例如: 键盘录入一个1-100之间的整数
    顾虑: 键盘录入是用户操作的, 用户就可能会出现一些误操作的现象
*/
public static void main(String[] args) {
    /*
  for(;;){
    System.out.println("我停不下来了~");
  }
  */
    /*
  while(true){
    System.out.println("我停不下来了~");
  }
  */
    do{
        System.out.println("我停不下来了~");  
    }while(true);
    System.out.println("看看我能被执行吗?~"); // 无法访问的语句
}
}


4.4 跳转控制语句


跳转控制语句(break)

  • 跳出循环,结束循环
  • 跳转控制语句(continue)
  • 跳过本次循环,继续下次循环


注意: continue只能在循环中进行使用!


public class Demo1Continue {
  /*
  continue : 跳过某次循环体内容的执行
  注意:使用是基于条件控制, 在循环内部使用.
  需求: 模拟电梯上行的过程 1-24层, 4层不停.
  */
  public static void main(String[] args){
  for(int i = 1; i <= 24; i++){
    if(i == 4){
    continue;
    }
    System.out.println(i + "层到了~");
  }
  }
}
public class Demo2Break {
  /*
  break : 终止循环体内容的执行
  注意:使用是基于条件控制的
    break语句只能在循环和switch中进行使用.
  需求: 模拟20岁工作到80岁, 60岁退休.
  */
  public static void main(String[] args){
  for(int i = 20; i <= 80; i++){
    if(i == 60){
    break;  // 结束整个循环
    }
    System.out.println(i + "岁正在上班");
  }
  }
}
import java.util.Scanner;
public class Test {
  /*
  需求:程序运行后,用户可多次查询星期对应的减肥计划,直到输入0,程序结束
  步骤:
    1. 不明确用户操作几次, 使用死循环包裹业务逻辑
    2. 匹配到0的时候,使用break结束循环死循环
  */
  public static void main (String[] args){
  lo:while(true){
    System.out.println("请输入您要查看的星期数:");
    System.out.println("(如无需继续查看,请输入0退出程序)");
    // 1. 键盘录入星期数据,使用变量接收
    Scanner sc = new Scanner(System.in);
    int week = sc.nextInt();
    // 2. 多情况判断,采用switch语句实现
    switch(week){
    // 3. 在不同的case中,输出对应的减肥计划
    case 0:
      System.out.println("感谢您的使用");
      break lo;
    case 1:
      System.out.println("跑步");
      break;
    case 2:
      System.out.println("游泳");
      break;
    case 3:
      System.out.println("慢走");
      break;
    case 4:
      System.out.println("动感单车");
      break;
    case 5:
      System.out.println("拳击");
      break;
    case 6:
      System.out.println("爬山");
      break;
    case 7:
      System.out.println("好好吃一顿");
      break;
    default:
      System.out.println("您的输入有误");
      break;
    }
  }
  }
}


5. Random


5.1 Random产生随机数(掌握)


概述:


Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能

API后续课程详细讲解,现在可以简单理解为Java已经写好的代码

使用步骤:


导入包


import java.util.Random;


创建对象


Random r = new Random();


产生随机数


int num = r.nextInt(10);


解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19


示例代码:


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


5.3 Random练习-猜数字(应用)


需求:


程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?


当猜错的时候根据不同情况给出相应的提示


A. 如果猜的数字比真实数字大,提示你猜的数据大了


B. 如果猜的数字比真实数字小,提示你猜的数据小了


C. 如果猜的数字与真实数字相等,提示恭喜你猜中了


示例代码:


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


目录
相关文章
|
11天前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
Java循环操作哪个快?
|
8天前
|
Java
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
25 2
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
26天前
|
算法 Java 测试技术
🧑‍💻Java零基础:Java 的循环退出语句 break
【10月更文挑战第16天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
45 6
|
1月前
|
Java 测试技术 编译器
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 6
|
1月前
|
Java 测试技术 数据安全/隐私保护
📖Java零基础-while循环语句的深度解析
【10月更文挑战第6天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 1
|
1月前
|
传感器 Java 测试技术
📖Java零基础-do-while循环语句的深入剖析
【10月更文挑战第5天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
15 1
|
1月前
|
Java 程序员 编译器
在Java编程中,if-else与switch语句犹如武林高手的剑与刀
【10月更文挑战第3天】在Java编程中,if-else与switch语句犹如武林高手的剑与刀。本文通过示例展示如何巧妙运用这两种工具,提升代码效率与可读性。从精简if-else结构到高效使用switch语句,再到性能考量,帮助你在不同场景下做出最佳选择,让你的程序更加流畅高效。掌握这些技巧,你将在Java世界中游刃有余!
21 2
|
5天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
下一篇
无影云桌面