上期我们详细了解了选择结构的语法以及用法,今天我们来详细的学习循环结构的相关知识
索引列表:
- 什么是循环结构
- for循环
- while循环
- 用函数创建循环(选学)
- 循环嵌套
- 死循环
什么是循环结构
循环结构,简单来说,是指在程序运行中不断地执行某一个语句(块)的结构 ,这种结构可以使程序重复执行,让程序重复完成同一个任务
举例,小明正在学习小古文,只要不会背,就持续地读,读到会背为止,这就是一个抽象的循环结构,重复执行的是读小古文,执行的条件是只要不会背就重复执行。
在游戏中,可以按前后左右键(或wsad键)移动角色,那么按键过程中会有一个循环结构重复检测,检测这个人按了什么键,然后根据按下的键调用不同程序执行,但是没有执行的条件,只是一味的重复执行,然后游戏结束就break(跳出循环),所以他不是死循环(后面会详细讲解)
for循环
for 循环是Java语言里面一个比较常见的循环结构,它可以让程序在条件内重复执行。它的基本语法是:
for (变量名(如果没有则需要定义);布尔表达式;变量更新)
需要循环的语句;
在for 循环里有一个变量,它是一个局部变量,它控制着for 循环的变量更新,所以他是一个计数器变量。布尔表达式则控制着整个for循环,如果布尔表达式的结果为真,就会跳出for循环,而变量更新则是在原来计数器变量里更改变量的值(虽然他是一个计数器,但是他是可以在循环体中被调用的)
for循环一般用在指定次数的循环。
下面来看一个简单的例子:
两个小朋友在玩老狼老狼几点了的游戏,请试编一程序,输出这段话:
老狼老狼几点了?一点了
老狼老狼几点了?二点了
老狼老狼几点了?三点了
老狼老狼几点了?四点了
老狼老狼几点了?五点了
老狼老狼几点了?六点了
老狼老狼几点了?七点了
老狼老狼几点了?八点了
老狼老狼几点了?九点了
老狼老狼几点了?十点了
老狼老狼几点了?十一点了
老狼老狼几点了?十二点了
狼来啦,快跑!
public class Solution{
public static void main(String[] args){
System.out.println(“老狼老狼几点了?一点了\n老狼老狼几点了?二点了\n老狼老狼几点了?三点了\n老狼老狼几点了?四点了\n老狼老狼几点了?五点了\n老狼老狼几点了?六点了\n老狼老狼几点了?七点了\n老狼老狼几点了?八点了\n老狼老狼几点了?九点了\n老狼老狼几点了?十点了\n老狼老狼几点了?十一点了\n老狼老狼几点了?十二点了\n狼来啦,快跑!”);
}
}
有人说,很简单,只要复制黏贴就可以简单解决,但是如果有几千句或几万句呢?这时就可以用循环结构来解决。
public class Solution{
public static void main(String[] args){
for(int i = 1;i <= 12;i ++){
System.out.println(“老狼老狼几点了?” + i + “点了”);
}
}
}
运行结果:
老狼老狼几点了1点了 老狼老狼几点了2点了 老狼老狼几点了3点了 老狼老狼几点了4点了 老狼老狼几点了5点了 老狼老狼几点了6点了 老狼老狼几点了7点了 老狼老狼几点了8点了 老狼老狼几点了9点了 老狼老狼几点了10点了 老狼老狼几点了11点了 老狼老狼几点了12点了
while循环
while和for很相似但却不同,while一般用于和数组、变量没有直接关联的循环,while也是死循环的基本来源。它的语法如下:
while(布尔表达式)
语句
大家想必也都知道了如果语句超过两条应该怎么办,那么就不多详细介绍了,我们来仔细地剖析一下while 循环的格式以及作用
首先语句的开头while()声明这是一个while 循环,中间括号里的又是我们熟悉的布尔表达式,布尔表达式放在这里的基本作用和 for 循环的基本一样,都是判断条件是否成立决定是否跳出循环,如果是则跳出循环,否则重复执行语句块中的内容。
接下来我们一起用儿歌的形式了解一下while 循环:
“一二三四五,上山打老虎,老虎不在家,打只小松鼠,松鼠有几只?一二三四五”
试编一程序,输出儿歌中“一二三四五”这五个数字。
目前我们有三种解法:
1)
public class Solution{
public static void main(String[] args){
System.out.println(“1\n2\n3\n4\n5”);
}
}
2)
public class Solution{
public static void main(String[] args){
for (int i = 1;i <= 5;i ++){
System.out.println(i);
}
}
}
3)
public class Solution {
public static void main (String [] args){
int i = 1;
while (i <= 5){
System.out.println(i);
}
}
}
其中,第三种是这一知识点比较重要的算法,也就是用while 循环去输出
1)
public class Solution{
public static void main(String[] args){
System.out.println(“1\n2\n3\n4\n5”);
}
}
2)
public class Solution{
public static void main(String[] args){
for (int i = 1;i <= 5;i ++){
System.out.println(i);
}
}
}
3)🌟🌟🌟
public class Solution {
public static void main (String [] args){
int i = 1;
while (i <= 5){
System.out.println(i);
}
}
}
(选学)用函数创建循环
你想看就看,不想看随你
这种循环运用了递归算法,建议先学了递归再回来看这个,会更容易理解
我们的主要思路是,当一个条件不满足,也就是布尔表达式为假,那么我们就重复调用函数本身(所以不可以用主方法来写,因为主方法不可以被自身或其他函数调用)
以下是代码实现:
public class HanshuXunhuan{
public static int xunhuan(int n){//循环方法(一定要是静态的)
if (n == 1){
return n;
}else{
System.out.println(n);
return xunhuan(n-1);
}
}
public static void main(String args[]){
xunhuan(100);//这里的参数是循环的次数可以更改
}
}
运行结果:
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2
循环嵌套
循环是可以嵌套的,嵌套起来的多个循环成为多重循环,多重循环分外循环和内循环,外循环是最外面的循环,内循环是除了外循环以外的内部的循环。多重循环执行的次数就是内循环执行次数乘外循环执行次数。
举例,小明要去四趟超市,每次要买四个牙刷,一共买了多少个牙刷?我们可以编写一个统计程序,定义一个整型变量sum,重复四次,每次也重复四次将sum重复加一。
public class Solution{
public static void main (String [] args){
int sum = 0;
for(int i = 1; i <= 4; i ++){
for(int j = 1;j <= 4;j ++){
sum ++;
}
}
System.out.println(sum);
}
}
这里就不展示结果了,大家可以自己去试,这里我们把两个循环套在一起,就称之为循环的嵌套。
死循环
死循环是指永远不会跳出的循环,这种循环会一直执行,这种循环对程序来说通常是致命的,但有时也会用到死循环。我们简单了解一下就行了。
呢么这篇文章到这里就结束了,大家记得一键三连哦