Java核心技术卷I基础知识3.8.4 确定循环

简介:

3.8.4 确定循环


for循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或类似的变量来控制迭代次数。如图3-12所示,下面的程序将数字1~10输出到屏幕上。

 

   

     图3-11 do/while语句的流程图        ???图3-12 for语句的流程图

for语句的第1部分通常用于对计数器初始化;第2部分给出每次新一轮循环执行前要检测的循环条件;第3部分指示如何更新计数器。

与C++一样,尽管Java允许在for循环的各个部分放置任何表达式,但有一条不成文的规则:for语句的3个部分应该对同一个计数器变量进行初始化、检测和更新。若不遵守这一规则,编写的循环常常晦涩难懂。

即使遵守了这条规则,也还有可能出现很多问题。例如,下面这个倒计数的循环:

 

      警告:在循环中,检测两个浮点数是否相等需要格外小心。下面的for循环

 

可能永远不会结束。由于舍入的误差,最终可能得不到精确值。例如,在上面的循环中,因为0.1无法精确地用二进制表示,所以,x将从9.999 999 999 999 98跳到10.099 999 999 999 98。

当在for语句的第1部分中声明了一个变量之后,这个变量的作用域就为for循环的整个循环体。

 

特别指出,如果在for语句内部定义一个变量,这个变量就不能在循环体之外使用。因此,如果希望在for循环体之外使用循环计数器的最终值,就要确保这个变量在循环语句的前面且在外部声明!

 

另一方面,可以在各自独立的不同for循环中定义同名的变量:

 

for循环语句只不过是while循环的一种简化形式。例如,

 

可以重写为:

 

程序清单3-5给出了一个应用for循环的典型示例。这个程序用来计算抽奖中奖的概率。例如,如果必须从1~50之间的数字中取6个数字来抽奖,那么会有(50×49×48×47×46×45)/(1×2×3×4×5×6)种可能的结果,所以中奖的几率是1/15 890 700。祝你好运!

程序清单3-5 LotteryOdds/LotteryOdds.java

 

 

一般情况下,如果从n个数字中抽取k个数字,就可以使用下列公式得到结果。

 

下面的for循环语句计算了上面这个公式的值:

 

      注释:3.10.1节将会介绍“通用for循环”(又称为for each循环),这是Java SE 5.0新增加的一种循环结构。

相关文章
|
8天前
|
监控 Java 物联网
Java串口通信技术探究1:深入理解RXTX库
Java串口通信技术探究1:深入理解RXTX库
23 2
|
1天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
12 0
|
1天前
|
存储 安全 Java
深入理解Java字节码与反编译技术
深入理解Java字节码与反编译技术
10 0
|
1天前
|
Java 测试技术
Java一分钟之-循环结构:for与while循环
【5月更文挑战第8天】本文探讨了Java中两种主要的循环结构——`for`和`while`循环。`for`循环适用于已知迭代次数的情况,常见问题包括无限循环、初始化错误和作用域混淆。`while`循环适用于循环次数未知但条件明确的情况,需注意更新条件、死循环初始化和逻辑错误。避免错误的策略包括明确循环目的、检查边界条件、管理迭代变量、进行代码审查和测试,以及使用增强型`for`循环。正确理解和使用这些循环能提升代码质量。
10 0
|
2天前
|
监控 Java Maven
揭秘Java Agent技术:解锁Java工具开发的新境界
作为JDK提供的关键机制,Java Agent技术不仅为Java工具的开发者提供了一个强大的框架,还为性能监控、故障诊断和动态代码修改等领域带来了革命性的变革。本文旨在全面解析Java Agent技术的应用场景以及实现方式,特别是静态加载模式和动态加载模式这两种关键模式。
15 0
|
4天前
|
Java
Java中的多线程编程:基础知识与实战技巧
【5月更文挑战第6天】多线程编程是Java中的一个重要特性,它允许我们在一个程序中同时执行多个任务。本文将介绍Java多线程的基础知识,包括线程的创建、启动、同步和通信,以及如何在Java中实现多线程编程。通过实例代码和解析,帮助读者深入理解Java多线程编程的概念和应用。
|
5天前
|
Java
Java中的多线程编程:基础知识与实践
【5月更文挑战第5天】在现代软件开发中,多线程编程是一个重要的概念,尤其是在Java这样的多平台、高性能的编程语言中。通过多线程,我们可以实现并行处理,提高程序的运行效率。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制方法,以及一些常见的多线程问题和解决方案。
|
8天前
|
存储 缓存 前端开发
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
27 3
|
8天前
|
安全 IDE Java
Java串口通信技术探究2:RXTX库单例测试及应用
Java串口通信技术探究2:RXTX库单例测试及应用
25 4
|
8天前
|
存储 前端开发 安全
13:会话跟踪技术Session的深度应用与实践-Java Web
13:会话跟踪技术Session的深度应用与实践-Java Web
23 3