java基础(四)、循环结构


版权声明

原创作者:是飘飘呀!
博客地址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遍"+"媳妇儿,我错了!");
	}
}

结果:
java在这里插入代码片
那这样子是不是就要被媳妇儿掐死了呢?哈哈哈,同学醒醒,你哪儿来的媳妇儿,好好写代码!!!
像这样写下去,以后我们还怎么面向工资编程?是不?

那么,我们就要来学习一个神奇的东西,那就是循环
那么我们需要学习的循环语句如下:

  • 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循环语句。

最后

学习是用没有终点的,只有终身的学习;这篇文章简直真的是用一点一点的碎片时间写出来的,感觉最近好忙啊;哈哈,各位童鞋,要加油学习哦!
文章可能有些地方不太准确,望各位多多指正哦!在此谢过!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值