《Android游戏开发详解》——第1章,第1.8节控制流程第2部分——while和for循环

1.8 控制流程第2部分——while和for循环
Android游戏开发详解
在前面的小节中,我们介绍了使用if和else语句块来产生代码分支。现在,我们来介绍两种类型的循环:while循环和for循环。循环允许我们执行重复性的任务。循环特别重要,没有它们,游戏将无法运行。

1.8.1 while循环
假设你想要编写一个函数打印出所有的正整数,直到达到给定的输入n。解决这个问题的策略(算法)如下。

1.  创建一个新的整型,将其值初始化为1。

2.  如果该整数小于或等于给定的输入n,打印其值。

3.  将该整数增加1。

4.  重复步骤2和步骤3。

我们已经学习了如何执行该算法的前3步。让我们写下已经知道的内容。

程序清单1.18 计数器(非完整版)

1 ????? countToN(int n) {
2  int counter = 1; // 1. Create a new integer, initialize it at 0.
3  if (counter <= n) { // 2. If this integer is less than or equal to the input
4  print(counter); // Print the value
5  counter = counter + 1; // 3. Increment the integer by 1
6  }
7 }

我们必须在代码中解决两个问题。首先,函数应该返回什么类型(通过程序清单1.18的第1行中的问号来表示)?它应该是一个int类型吗?实际上,在我们的例子中,甚至没有一条return语句;该函数并不会产生任何可供我们使用的结果。当没有返回任何值的时候,就像前面的函数那样,我们说返回类型是void。

其次,如何让这段代码重复步骤2和步骤3?这实际上很简单。我们使用一个while循环,只要某个条件能够满足,就会让这个循环保持运行。在我们的例子中,所需要做的只是用关键字“while”替代关键字“if”。完整的函数如程序清单1.19所示(修改的代码突出显示)。

程序清单1.19 计数器(完整版)

1 void countToN(int n) {
2  int counter = 1; // 1. Create a new integer, initialize it at 0.
3  while (counter <= n) { // 2. If this integer is less than or equal to the input
4  print(counter); // Print the value
5  counter = counter + 1; // 3. Increment the integer by 1
6  }
7 }

让我们一行一行地来看看该函数(参见程序清单1.19)。

第1行声明了函数的返回类型(void)、函数名称(countToN)和输入(n)。

第2行声明了一个名为counter的新的整型,并且将其值初始化为1。

第3行开始一个while循环,只要条件(counter <= n)满足,它就会运行。

第4行打印出counter变量的当前值。

第5行将counter增加1。

当到达第5行的时候(第6行的花括号表示循环结束),代码将再次执行第3行。这里会重复,直到counter变得比n大,此时,会跳出while循环。要看看这是如何工作的,让我们在代码中的任意地方调用该函数。

print(“Initiate counting!”);
countToN(5); // Call our countToN() function with the argument of 5.
print(“Counting finished!”);
相应的输出如下所示。

Initiate counting!
1
2
3
4
5
Counting finished!

这就是while循环。只是编写一条if语句,并且将关键字“while”放到那里,代码就可以重复一项任务了。

关键知识点

while循环

只要给定的条件计算为true,while循环就将继续迭代。如果我们有一个条件总是为true,例如,while (5 > 3) …,while循环将不会结束。这就是一个无限循环。

1.8.2 for循环
程序清单1.19中的计数逻辑的使用如此频繁,以至于人们为此专门设计了一个循环。它叫作for循环。for循环的语法考虑到了各种问题的较为整洁的解决方案,使得我们能够节省代码行。如图1-6所示。

for循环需要做3件事情。必须初始化计数器变量,设置终止条件,然后定义一个自增表达式。该循环将持续迭代(重复),直到终止条件计算为假(在上面的示例中,就是直到i大于6)。每次迭代之后,i都会按照自增表达式中给出的规则来递增。

在程序清单1.19中使用一个for循环来计数重新编写代码的话,可以得到程序清单1.20。

程序清单1.20 计数器(for循环版)

1 void countToN(int n) {
2  for (int i=1; i<=n; i++) {
3   print(i);
4  }
5 }

一旦掌握了语法,编写for循环比编写while循环要快很多。for循环很快将会变为我们的无价之宝,并用来干从移动精灵到渲染动画的每一件事情。`

时间: 2024-12-07 13:12:30

《Android游戏开发详解》——第1章,第1.8节控制流程第2部分——while和for循环的相关文章

《Android游戏开发详解》一第2章 Java基础知识

第2章 Java基础知识 Android游戏开发详解第1章内容完全是成为Java程序员的准备工作.在本章中,你将编写自己的第一个Java程序(包括一款简单的游戏),并学习如何把游戏的角色.加血(power-up)以及其他实体表示为Java对象.

《Android游戏开发详解》——第2章,第2.2节设置开发机器

2.2 设置开发机器 Android游戏开发详解 在开始编写简单点的Java程序和构建令人兴奋的游戏之前,我们必须在自己的机器上安装一些软件.然而,这个过程有点枯燥且颇费时间,但是,为了让第一个程序开始运行,这些代价都是值得的. 2.2.1 安装Eclipse 我们将利用一个集成开发环境(Integrated Development Environment,IDE)来编写Java/Android应用程序.IDE是一种工具的名称,它能够帮助我们轻松地编写.构建和运行程序. 我们将要使用的IDE叫作

《Android游戏开发详解》——第1章,第1.9节训练到此结束

1.9 训练到此结束Android游戏开发详解如果你已经学到了这里,恭喜你!你已经完成了进入美丽的.复杂的并且偶尔令人沮丧的编程世界的第一步.但是,在编写一些Java代码之前,你还不能自称为一名Java程序员.因此,快打开你的计算机并且开始学习第2章,在那里,我们要构建一些Java程序了.

《Android游戏开发详解》——第2章,第2.8节对象的基础知识

2.8 对象的基础知识Android游戏开发详解我们已经应用了第1章中介绍过的概念来编写和运行一些非常简单的Java程序.接下来,我们将把注意力转向对象,它使得我们能够编写更加复杂和强大的程序. 什么是对象?以你看待现实世界中的物体的方式来思考Java对象,这么做是有帮助的.对象所拥有的属性,我们称之为状态(state)和行为(behavior). 让我们以手机为例子.你的手机拥有状态,它可能是黑色的,并且可能打开了电源开关.这些属性可以帮助我们描述手机以形成其状态.手机还会有行为.它可能能够播

《Android游戏开发详解》——第3章,第3.7节里程碑

3.7 里程碑Android游戏开发详解介绍完这个示例,我们也就结束了本书的第3章和第1部分.如果你一直在学习,那么应该已经了解了编程的基础知识,掌握了Java基础并且学习了高级的面向对象设计概念.Java游戏开发就在前面,它肯定是一个巨大的挑战甚至会带来更多的兴奋. 在我们继续学习之前,我想要提醒你,Java是一种庞大的编程语言.尽管我已经试图尽可能地向你介绍在开发Java和Android游戏的时候可能会遇到的所有概念,但我还是没办法公正地对待这门语言.如果你有兴趣学习Java的更多知识以及更

《Android游戏开发详解》——第2章,第2.1节面向对象编程

2.1 面向对象编程Android游戏开发详解Java是一种面向对象编程语言.在面向对象的范型中,我们以对象的形式来表示数据,以帮助我们形成概念并沟通思路.例如,在构建视频共享Web应用程序的时候,我们可能要创建一个User对象来表示每个用户账户(及其所有的数据,例如,用户名.密码.上传的视频等).使用一个Video对象来表示每一个上传的视频,其中的很多视频都组织到一个Playlist对象中. 考虑到整洁.健壮的代码更容易阅读和理解,面向对象编程允许我们将相关的数据组织到一起.为了了解这一思路,

《Android游戏开发详解》——第2章,第2.14节隐藏变量

2.14 隐藏变量Android游戏开发详解注意,到目前位置,我们能够以两种不同的方式来修改Phone对象的状态.我们能够使用点运算符直接访问其变量,并且分配显式的值:还能够使用Phone对象提供的行为来间接地修改Phone对象的状态. 如果能够直接深入到myPhone对象,取出其信息并修改,我们说对象的变量是暴露的.从现在开始,我们将禁止暴露变量,基于很多原因,暴露变量可能会有问题. 例如,如果某人试图给一个变量分配一个非法的(或者不符合逻辑的)值,会怎么样呢?如下的代码对Java程序来说可能

《Android游戏开发详解》——第2章,第2.6节构建一个简单的计算器程序

2.6 构建一个简单的计算器程序Android游戏开发详解现在,我们已经尝到了甜头,让我们回过头来看看第1章介绍过的一些概念,并且构建一个简单的计算器程序.让我们给出一些动手实践的指导,来构建一个新的Java程序.请记住如下的主要步骤. ① 创建一个新的Java项目(将其命名为SecondProject). ② 在src文件夹中创建一个新的类(将其命名为SimpleCalculator). ③ 创建一个main方法. 如果任何时候你碰到困难,应该参考前面的小节.一旦按照上面的步骤进行,应该会看到

《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)

1.6 函数(在Java中称为"方法"更好)Android游戏开发详解让我们将目前为止所学到的所有内容组合起来,并且讨论编程的一个重要方面,即函数. 函数是一组规则.特别地,函数应该接受一个值并且输出一个相应的结果.以一个数学函数为例. f(x)=3x +2 输入是任意的数值x,输出是3x +2的结果 例如,f(1)=3(1)+2=5在Java中,我们可以定义一个非常类似的函数.如下的函数将接受一个float类型的输入,并且输出计算3x+2的结果. 程序清单1.6 Java函数 1 f

《Android游戏开发详解》——第3章,第3.4节多态

3.4 多态Android游戏开发详解你可能会问,为什么我们必须创建一个接口和一个类,来定义一个单个的King类呢?你可能会告诉自己,现在Human接口还真的做不了太多事情,你说的绝对没错. 使用接口允许我们创建一类对象,但是,在学习多态之前,我们很难意识到这对程序来说意味着什么. 来看一下如下所示的方法. public void feed(Human h) { System.out.println("Feeding Human!"); h.eat(); } 该方法可以接受一个单个的H