“嗨我是学长,今天的你过得还好吗?”
“这里是offer学院,帮你轻松拿offer”
- 2022.11.11 -
在第七节,我们了解了循环的概念,这节我们具体学习循环的使用。
在java中,提供给我们的循环有多种,while,do...while,for等,本节主要涉及while的使用,for循环放在下节讲述。我们一起来学习吧。
一、方式1-while循环
1、语法结构:
while(条件){ //循环体部分}
分析说明:
在每次循环开始前,首先会判断条件是否成立,如果计算结果为true,就会执行循环体内部语句。如果计算结果为false,会跳出循环,执行后续代码。
示例代码如下:
public class WhileLoop1 { public static void main(String args[]) { int i = 1; while (i <= 5) { System.out.println(i); // 打印i i ++; // i自增1 } }}
解析:
o在循环体内部,除了打印变量i的值,还有一个语句:i++,这个语句的作用是让变量i自增1。如果没有这个语句,i的值永远不会改变,所以循环条件永远成立,程序将陷入死循环,直到将资源耗尽才会停止,所以要杜绝编写死循环代码。
2、正常示例代码:
需求:1到100的累加
代码如下:
public class WhileLoop2 { public static void main(String[] args) { int sum = 0; // 累加和 int i = 1; while (i <= 100) { sum = sum + i; // 使sum和i相加,并将值再次赋值给sum i ++; // i自增1 } System.out.println("1到100的累加和为:" + sum); }}
解析:
- 1.定义两个变量sum和i分别用于存放累加和以及要累加的数字。
- 2.循环开始前判断条件i<=100是否成立,此时i=1,成立,执行循环体内代码。
- 3.循环体内代码第一次执行,sum=1,i自增1变为2。
- 4.再次判断循环条件,成立就继续执行循环体,直到i=100,自增1变为101,此时条件不成立。执行循环后面的代码。
- 5.执行打印语句,打印最终的sum值,程序结束。
3、无限死循环,永远执行,直到冒烟:
常量的值在编译期就能确定,true字面量(常量),在编译的时候值就确定了在编译代码的时候,就能确定while(true)是个死循环。
public class whileTest { public static void main(String[] args) { /** * 无限死循环 永远执行 */ while (true) { //当条件为TRUE 会永远执行 不会停止 System.out.println("我会永远执行跑下去~"); } //后续代码将不可能会被执行 而报错 System.out.println("我会停下来休息下吗?"); }}
变量的值,在运行期才能确定,x变量,在编译的时候,无法确定x的值只有在运行的时候,才能确定x的值,在编译时while(x<10)无法判断是否是死循环只有运行了之后,才会发现是死循环,但是此时已经晚了。
public class whileTest { public static void main(String[] args) { /** * 无限死循环 永远执行 */ int x = 2; while (x < 5) { //由于缺少 迭代部分 致使 x<5 永远为true //条件 x<5 判定为真 会永远执行 不会停止 System.out.println("我会永远执行跑下去~"); } //后续代码将不可能会被执行 在编译时无法确定X的值 这行代码不会报错 System.out.println("我会永远执行跑下去~"); }}
在正常代码中,我们应该避免这种错误。
二、do...while...循环
dowhile循环的功能与while循环类似,不同点在于:while循环是先判断条件,再执行循环体;而dowhile循环则是先执行循环体,再判断条件,如果条件成立继续执行循环,条件不成立则终止循环。
dowhile语法格式如下:
do { // 循环体} while (条件);
无论条件成立与否,dowhile循环都至少执行一次。而while循环可能一次都不会执行。
代码示例如下:
import java.util.Scanner;public class whileTest { public static void main(String[] args) { /** * 判断输入数字是正数还是负数 */ //从键盘接受数据 System.out.println("请输入一个数字:"); Scanner in = new Scanner(System.in); int num = in.nextInt(); do { System.out.println("这次输入的数字为:" + num); if (num > 0) { System.out.println(num + " 为正数~"); } else if (num < 0) { System.out.println(num + " 为负数~"); } //再次输入下一个数字以做判断 System.out.println("请输入一个数字:"); num = in.nextInt(); } while (num != 0); }}
小结:
本节我们学习了while的两种用法以及对应的不同,下节课我们将要学习java中循环使用频率最高的for循环,下节课见。
我们下期再见!
END
文案编辑|offer学长
文案配图|offer学长
原创内容|田老师出品
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除