版权声明
原创作者:是飘飘呀!
博客地址:https://blog.csdn.net/weixin_44216392
循环结构
为了更高效的执行程序,我们来学习一下循环结构;使用循环结构的目的,除了高效,还有需求;有时候需要我们做同一件事很多遍,我们就需要使用循环结构;
在我们还没有学习循环之前,如果要我们打印100句“媳妇儿,我错了!”那就有点难受了呀!例如:
public class Test11 {
public static void main(String[] args) {
System.out.println("媳妇儿,我错了!");
System.out.println("媳妇儿,我错了!");
System.out.println("媳妇儿,我错了!");
System.out.println("媳妇儿,我错了!");
System.out.println("媳妇儿,我错了!");
System.out.println("媳妇儿,我错了!");
/*
* ....此处省略94遍
*/
System.out.println("此处省略94遍"+"媳妇儿,我错了!");
}
}
结果:
那这样子是不是就要被媳妇儿掐死了呢?哈哈哈,同学醒醒,你哪儿来的媳妇儿,好好写代码!!!
像这样写下去,以后我们还怎么面向工资编程?是不?
那么,我们就要来学习一个神奇的东西,那就是循环;
那么我们需要学习的循环语句如下:
- for 用于执行已知循环次数的语句。
- while 用于执行未知循环次数的语句。只有满足条件才能循环
- do…while 用于执行未知循环次数的语句。不管是否满足条件,都至少会执行一次循环。
当然还有可以控制循环的语句:
- continue:中断本次循环,直接进入下一次循环;
- break:中断整个循环,即退出循环;
好了,了解了基本的循环语句后我们来仔细看看它是怎么一回事;
for循环
首先我们学习一个语句应该先学习它的语法,即怎样使用才不会出错;
for(初始化表达式 ; 条件表达式 ; 循环后的操作表达式) {
循环体;
}
注意:for循环括号里的三个条件缺一不可,或者换一个说法,你也可以所有条件的表达式都不写,但是它的两个分号必须写上,不然就不是一个完整的for循环,同时也会报错!!! 当然,你什么条件都不写,那他就是一个死循环,只要电脑不报废,不断电,不死机…也就是可以正常工作 那么它就可以循环到天荒地老!!!
例如:
public class Test11 {
public static void main(String[] args) {
for(;;) {
System.out.println("1");
}
}
结果:
大家可以粗略的看到右边的滚动条很长…
那么,问题来了,for循环的执行流程是怎样的呢?
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句
d:执行循环后的操作表达式
e:回到b继续
这样看起来可能有点不好理解,没关系,我们看一下它执行过程的流程图是怎样子的;
看到这里,相信各位童鞋已经对for循环有了初步的认识,那我们再来看一下使用for循环重新写一下之前那个例子;
public class Test11 {
public static void main(String[] args) {
for(int i=1;i<=100;i++){
System.out.println("这是第"+i+"遍,媳妇儿,我错了!");
}
}
}
结果:
这样子是不是简单、方便、快捷了很多呢?妈妈再也不用担心我找不到女朋友啦~
那我们就做几个练习实试试看咯~
练习一:请在控制台打印如下图形请在控制台打印如下图形
public class Test11 {
public static void main(String[] args) {
System.out.println("请输入要打印的行数:");
Scanner scan = new Scanner(System.in);
int line = scan.nextInt();
for (int i = 1; i <= line; i++) { //控制行数
for (int j = 1; j <= i; j++) { //控制*的个数
System.out.print("*");
}
System.out.println();//换行
}
}
}
结果:
打印九九乘法表:
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(j*i)+"t");
}
System.out.println();
}
}
其实这个练习和上一个的原理是一模一样的,只不过就是把*号换成了一个算术表达式;
结果:
打印等腰三角形的栗子请参考我的另一篇博客:https://blog.csdn.net/weixin_44216392/article/details/100127624
while循环
while循环就是循环结构的一种,当事先不知道循环该执行多少次,就要用到while循环;
while循环的语法结构:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
- a:执行初始化语句
- b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环 - c:执行循环体语句; - d:执行控制条件语句
- e:回到B继续。
流程图:
while循环也可以做for循环能做的事情,只不过我们要区别使用它们,在什么情况下使用while循环,在什么时候使用for循环;这个在靠后一点再给大家详细讲解;
那么我们就使用while循环来打印一个九九乘法表;
public class Test11 {
public static void main(String[] args) {
int i=1; //初始化i
while(i<=9) {
int j=1; //初始化j
while(j<=i) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
j++;
}
System.out.println();//每循环一次换行
i++;
}
}
}
结果:
while循环打印等腰三角形
import java.util.Scanner;
public class Test11 {
public static void main(String[] args) {
System.out.println("请输入需要打印的层数:");
Scanner scan=new Scanner(System.in);
int line=scan.nextInt();
int i=1;
while(i<=line) {
int j=1;
while(j<=line-i) {
System.out.print(" ");
j++;
}
int k=1;
while(k<=2*i-1) {
System.out.print("*");
k++;
}
i++;
System.out.println();
}
scan.close();
}
}
结果:
其实看到这里,我也感受到了,使用不同循环语句,即使得到相同的结果,但过程却不是那么的让人舒服;比如打印这个等腰三角形,个人感觉使用for循环要简洁很多,代码也要有可读性一些;就是明明可以用一行代码写完一个循环,为什么非要为难自己呢?哈哈!
do…while
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while循环和while循环相似,不同的是,do…while循环至少会执行一次。不管怎么样都会先去执行一次do里面的循环语句(在实际开发中很少使用)
语法:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
- a:执行初始化语句
- b:执行循环体语句;
- c:执行控制条件语句
- d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环 - e:回到b继续。
流程图:
利用do…while循环打印10遍我想要女朋友
public class Test11 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i + "我想要女朋友!!!");
i++;
} while (i <= 10);
}
}
结果就不展示了,就算我说一万遍,女朋友也是没有的(小声哔哔)!!!最后想给大家说一下,do…while循环语句,我们作为初学者,了解一下,知道语法,知道怎么使用就行了;因为这么久了,我除了刚学的时候接触过,就再也没有使用过它,当然这不是让大家不学它哈;该了解掌握的还是要掌握在手嘛!但是for循环和while循环的话就需要作为重点来掌握了,开发和实践过程中,少不了它们俩的存在!
三种循环的区别
- do…while循环至少执行一次循环体;而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
- 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用谁就用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率
循环控制语句
控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。常用的转向控制有break、continue、return;
- break:终止整个循环;
- continue:终止本次循环,继续下次循环;
- return:返回;
break示例:
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 4) {
System.out.println("if判断之内,打印i="+i);
break;
}
System.out.println("if判断之外,打印i="+i);
}
}
结果:
根据结果,我们可以看到,在执行到i==4的时候,直接跳出了循环,整个程序停止了运行;可见break的作用,就是结束整个循环;当然不是结束整个程序,如果还有其他的代码,程序仍然会继续向下执行,即break结束的是当前做作用域内的代码,而在这里,break的作用于就是if语句的大括号内;
continue示例
求1-100以内所有偶数的和;
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 1) {
continue;
}
sum+=i; //等价于sum=sum+i;
}
System.out.println(sum);
}
//结果2550
根据运行结果,我们可以看到,当i%2==1的时候,即i为奇数的时候,就使用continue跳出本次循环,继续下一次的循环,直至循环结束;如果还有其他代码就继续向下执行;
小结
- break会强制终止循环并跳出循环体。break语句用于终止最近的循环或它所在的 switch 语句,适用于for循环、switch两种语句。
- continue并不会强制终止循环,只是忽略了本次循环剩下的语句。continue语句将控制权传递给它所在的封闭- 迭代语句的下一次迭代(即跳出本循环,执行下一次循环),适用于while、do while、for循环语句。
最后
学习是用没有终点的,只有终身的学习;这篇文章简直真的是用一点一点的碎片时间写出来的,感觉最近好忙啊;哈哈,各位童鞋,要加油学习哦!
文章可能有些地方不太准确,望各位多多指正哦!在此谢过!