首页 > 编程笔记

Java while循环用法详解

循环是程序开发非常重要,也是使用频率很高的一个技能点。举一个例子,要求将“Hello World”打印 10 遍。如果不使用循环,需要写 10 行相同的代码“System.out.println("Hello World");”,如下代码所示。
public class Test {
   public static void main(String[] args) {
      System.out.println("Hello World");      //该语句写10次
   }
}
很显然这种写法并不是最优的方式,重复性的代码非常多。如果使用循环,我们就可以避免这个缺陷,用效率更高的方式来完成同样的需求。

在 Java 中,while 是一种具体的循环方式,它的基本语法如下:
while(循环条件){
    //循环体
}
当循环条件成立时,会重复执行循环体中的代码,直到条件不成立。那么很显然,我们应该在循环体中动态控制循环条件是否成立,否则就形成了死循环。循环条件始终成立导致循环体一直执行,不会停止。

所以我们在写循环时,需要额外添加控制循环条件的代码,这部分代码和循环本身组成了循环四要素,这是很重要的知识点,它描述了循环的本质,循环四要素如下:
  1. 初始化循环变量;
  2. 循环条件;
  3. 循环体;
  4. 更新循环变量。

一段完整的循环代码,四要素缺一不可。

接下来我们使用 while 循环来实现重复打印10次“Hello World”的需求,代码如下所示。
public class Test {
   public static void main(String[] args) {
      int num = 0;
      while(num < 10){
         System.out.println("Hello World");
         num++;
      }
   }
}
对上述代码进行分析,循环四要素如下图所示。


执行顺序是:
执行顺序如下图所示。


【实例】用 while 循环完成一个学生成绩查询系统,输入学生编号,查询出该学生的成绩,输入“yes”可重复查询,输入“no”结束循环。
import java.util.Scanner;
public class Test {
   public static void main(String[] args) {
      System.out.println("学生成绩查询系统");
      Scanner scanner = new Scanner(System.in);
      int num;
      String str = "yes";
      while(str.equals("yes")){
         System.out.print("请输入学生编号:");
         num = scanner.nextInt();
         switch(num){
            case 1:
               System.out.println("张三的成绩为90");
               break;
            case 2:
               System.out.println("李四的成绩为96");
               break;
            case 3:
               System.out.println("王五的成绩为88");
               break;
         }
         System.out.print("是否继续?yes/no:");
         str = scanner.next();
      }
      System.out.println("查询结束");
   }
}
Scanner 是一个工具类,用来接收用户在控制台输入的数据,使用 Scanner 首先需要将 Scanner 类引入当前类中,语句:“import java.util.Scanner;”,其中 java.util 是 Scanner 类的包名,在一个类中要使用其他包中的类,必须要引入(即import)。

引入之后来创建该类的实例化对象“Scanner scanner = new Scanner(System.in);”,其中“System.in”表示获取的是输入数据。接收不同的数据需要调用不同的方法,nextInt()方法用来获取 int 类型的数据,next() 方法用来获取 String 类型的数据。判断 String 类型的数据是否相等时,不能使用 ==,需要使用 equals() 方法进行判断。

程序的运行结果如下如所示:

推荐阅读