循环语句有哪些
while循环举例:
【练一练】使用 while 循环实现程序主界面菜单
import java.util.Scanner;
class TestWhile2 {
public static void main(String[] args) {
int userSel = -1; //用户选择输入的参数
//使用while(true),在单个模块功能执行结束后,重新输出主界面,继续循环
while (true) {
System.out.println("1. 输入数据");
System.out.println("2. 输出数据");
System.out.println("3. 退出程序");
System.out.print("请选择你的输入(只能输入1、2、3):");
Scanner input = new Scanner(System.in);
userSel = input.nextInt(); //从控制台获取用户输入的选择
//当用户输入3时,退出while循环,结束程序
if (userSel == 3){
System.out.println("结束程序!");
break;//break的作用是跳出while循环以结束程序运行
}
switch (userSel) {
case 1:
System.out.println("执行1.输入数据模块");
System.out.println("******************");
System.out.println("******************");
break;
case 2:
System.out.println("执行2.输出数据模块");
System.out.println("******************");
System.out.println("******************");
break;
case 3:
System.out.println("结束程序!");
break;
default:
System.out.println("输入数据不正确!");
break;
}
}
}
}
编译、运行此程序,程序的结果如下:
do…while循环
do…while 循环的语法形式如下。
do{
循环代码块
}while(循环条件);
do…while 循环和 while 循环类似,不同点在于 do…while 循环以 do 开头,先执行循环代码块,然后再判断循环条件,如果循环条件满足,则继续循环。
由此可见,do…while 循环中的循环代码块至少会被执行一次。
【练一练】输入正确的密码才能继续的程序
需求:让用户输入正确的程序密码之后,才可以执行下面的代码,否则继续让用户输入,直到输入正确为止。
import java.util.Scanner;
class TestWhile3 {
public static void main(String[] args) {
//使用字符串String存储密码,后面课程会详细介绍String类
String userPass = ""; //用户输入的密码
String PASSWORD = "123456"; //正确密码为123456
Scanner input = new Scanner(System.in);
do {
System.out.print("请输入程序密码:");
userPass = input.nextLine(); //从控制台获取用户输入的密码
System.out.println();
//字符串的equals()方法用于判断两个字符串的值是否相同
} while (!userPass.equals(PASSWORD)); //密码输入不正确,继续循环,重新输入
System.out.println("程序密码正确,继续执行!");
}
}
for循环
for 循环的重点在于其 3 个表达式,其中:
表达式 1 通常是赋值语句,一般是循环语句的初始部分,为循环参数赋初值,表达式 1 可以省略。
表达式 2 通常是条件语句,即循环条件,当该条件满足时,进入循环,不满足则跳出循环。表达式 2 也可以省略,但省略后就没有了循环判断条件,也就形成了死循环。
表达式 3 通常也是赋值语句,属于循环结构的迭代部分,当一次循环代码块执行完毕以后,程序执行表达式 3,然后再去判断表达式 2 的循环条件是否满足。表达式 3 通常用来更改循环参数的值。表达式 3 也可以省略,如果省略,通常需要在循环代码块中添加修改循环参数的语句。
综上所述,可以发现 for 循环的执行顺序如图所示。
跳转语句
在介绍 switch 语句的时候,首次接触了 break 语句,其作用是跳出 switch 代码块,执行 switch 语句后面的代码。在介绍双重 for 循环时,用到了 continue 语句,continue 语句的主要作用为跳出当次循环,继续执行下一次循环。其中 break、continue 以及后面要学的 return 语句,都是让程序从一部分跳转到另一部分,习惯上都称为跳转语句。
在循环体内,break 语句和 continue 语句的区别在于:使用 break 语句是跳出循环进而执行循环之后的语句(即结束当前的循环代码),而 continue 语句是跳过本次循环继续执行下一次循环(即跳过本次循环)。在企业面试的时候,这个问题经常被问到,务必掌握。
例:
continue作用
break作用
【练一练】使用 for 循环配合跳转语句求质数
业务逻辑分析和上次实验一样,本次我们重点解决的是当发现内层循环中存在某个 j 能将 i 整除的时候,应该直接跳过此次 i 的判断,直接让外层循环进入下一次循环。注意此处comtinue outer的作用!!!
class TestFor5 {
//输出1~100之间的质数
public static void main(String[] args) {
int i, j; //声明循环参数
outer://此处outer的作用是给外层循环起个名字,方便配合跳转语句
for (i = 2; i < 100; i++) { //从2开始,逐个递增进行判断
//Math.sqrt(i)方法是求i的平方根
for (j = 2; j <= Math.sqrt(i); j++) { //从2开始,逐个递增到外循环的平方根
if (i % j == 0){//外循环数除以内循环数,余0则非质数,跳出内循环
continue outer;//跳出内循环,跳到outer标识的位置继续循环
}
}
System.out.print(i+" "); //否则显示质数
}
}
}
程序的运行结果没有问题,注意此处 continue outer; 的作用,是跳到 outer 标识的位置继续循环,比如 i 的值为 98,j 的值为 2 的时候 i%j 的值为 0,已经可以断定 i 不是质数了,无需将 i 与 2 之后的数字取余,让外层的 i 进入下一次循环( i = 99 )即可。
在某些需求下我们会使用 break 来实现,注意 break 是跳出整个循环,而 continue 是跳出单次循环。
debug环节
debug是用与查看程序运行环节