Logo

郎哥编程

深入理解for循环语句

2018-01-31 1551

for循环语句是Java语言提供的功能更强,使用更广泛的一种循环语句。Java语言的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环条件的情况,它完全可以代替while循环。

for循环的一般语法为:

for(表达式1; 表达式2; 表达式3;)

{

    语句;

}

语法说明如下:

■ 表达式1:通常用来给循环变量赋初值,一般是赋值表达式,也允许在for语句外给循环变量赋初值,此时可以省略该表达式;

■ 表达式2:通常是循环条件,一般为关系表达式或逻辑表达式;

■ 表达式3: 通常可用来修改循环变量的值,一般是赋值语句。

for循环中的这三部分必须用分号隔开,组成循环体的语句可以是单条语句或一个语句集(多条语句)。

一般语法中的“语句”即为循环体语句。for语句的语义是:

(1)首先计算表达式1的值,通常为循环变量赋初值;

(2)再计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次,否则跳出循环;

(3)然后再计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第二步重复执行。

在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。循环体可能执行多次,也可能一次都不执行。

示例1:使用for循环求数的阶乘。

在D盘Java目录下,新建“FactorialSample.java”文件。用记事本打开“FactorialSample.java”文件,输入以下代码:

import java.util.*;
public  class  FactorialSample {
  public static void main(String args[])
  {
     int number,count;
     int factorial = 1;
     Scanner sc = new Scanner(System.in);
     System.out.println("请输入任意一个正整数");
     number = sc.nextInt();
     for( count=1;count<=number;count++ )   
     {
        factorial  =  factorial * count; 
     }
     System.out.printf("%d的阶乘 = %d",number,factorial);
  }
}

代码结构分析

程序功能主要是演示for循环语句的使用。

程序声明了3个int类型的变量,number、count、factorial。分别用于存储输入的整数、循环变量的值、阶乘值。For循环中表达式count=1为变量赋初值,表达式count<=number作为循环条件用来测试是否继续执行循环,表达式count++用来修改循环变量的值。

编译“FactorialSample.java”文件,在命令行窗口输入“javac  FactorialSample.java”并执行命令,编译通过后,在命令行窗口输入“java  FactorialSample”运行Java程序,命令行窗口显示如下信息:

                                             

a1008.png

图 8-9 示例1阶乘输出结果

 

for语句中的三个表达式都可以是逗号表达式,逗号表达式就是通过“逗号”隔开的多个表达式组成的表达式,逗号表达式从左往右计算。

示例2:使用for循环输出加法表。

在D盘Java目录下,新建“AdditionSample.java”文件。用记事本打开“AdditionSample.java”文件,输入以下代码:

import java.util.*;
public  class  AdditionSample {
  public static void main(String args[])
  {
     int i,j,max;
     Scanner sc = new Scanner(System.in);
     System.out.println("请输入任意一个数值");
     System.out.println("根据这个值可以输出以下加法表");
     max = sc.nextInt();
     for( i=0,j=max;i<=max;i++,j-- )   
     {
        System.out.printf("\n %d + %d = %d",i,j,i+j);
     }
  }
}

代码结构分析

程序功能主要是演示for循环中逗号表达式的使用。

程序在for循环中,表达式1为逗号表达式,该表达式为循环变量i和j赋初值,执行此表达式后,i被赋值为0,j被赋予max中的当前值;表达式3也是一个逗号表达式,每次循环后,i自加1,j自减1。

编译“AdditionSample.java”文件,在命令行窗口输入“javac  AdditionSample.java”并执行命令,编译通过后,在命令行窗口输入“java  AdditionSample”运行Java程序,命令行窗口显示如下信息:

a1009.png


图 8-10 示例2加法表输出结果

 

前面已讨论,for循环中有三个表达式,for循环中的这三个表达式都可以省略,但要注意分号分割符合不能省略,下面分别讨论for循环中省略部分或者全部表达式的情况。

(1)省略表达式1

for循环语句中表达式1可以省略不写,此时,循环变量应在循环语句之外赋值,例如如下语句:

int  i = 0;
for( ; i < 10; i++ )
{
   System.out.printf("\n %d=", i*2)
}

程序输出20以内的偶数,int  i = 0对循环变量进行赋值,因为循环变量i已经被赋值,此时循环语句可以省略表达式1。

(2)省略表达式2

for循环语句中的表达式2,在一定条件下也可以省略, 表达式2主要用于循环条件的判断。如果省略表达式2,就必须要在循环体中增加循环条件判断语句,如果不满足循环条件,则跳出循环。跳出循环可以用break语句,break语句将在后面介绍。省略表达式2的示例语句如下:

int i;
for( i=0;; i++ )
{
  if( i >=10 )
     break;
System.out.printf("\n %d=", i*2)
}

程序在循环体内增加了if( i >= 10 )条件判断语句,如果i>=10为真,则通过break语句跳出循环,如果循环体内没有跳出循环的条件判断语句,程序将进入无限循环。

(3)省略表达式3

for循环语句中的表达式3一般是用来修改循环变量的值,如果在循环体内有修改循环变量的语句,此时表达式3可以省略。例如如下语句:

int i;
for( i=0; i<10; )
{
i = i+1;
System.out.printf("\n %d=", i*2)
}

循环体内的i = i+1等同于for( ; i < 10; i++ )语句中的i++,每循环一次,i就进行加1操作,当i自增到10时,循环终止。

(4) 三个表达式都省略

三个表达式都省略的情况比较少见,此时,循环体为有循环变量的赋值语句,循环体内应有修改循环变量和循环条件判断的语句,否则很容易形成无限循环。例如如下语句:

int i=0;
for( ;; ; )
{
i = i+1;
  if( i >=10 )
     break;
System.out.printf("\n %d=", i*2)
}

程序中int i=0为循环变量i赋初值,循环体内i = i+1修改循环变量i的值,if( i >= 10 )判断循环变量i的值是否大于等于10,如果条件为真,则跳出循环。


■ 知识点拨

 for循环在Java编程中应用非常广泛,它不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环条件的情况,它完全可以代替while循环。只要弄明白了for循环的三个表达式,就可以掌握for循环的用法,表达式1是进入第一次for循环之前运行,并且只会执行一次;表示式2是for循环的执行条件,满足这个条件后才能进入循环里面的语句;表达式3是在执行一次循环后执行的语句。

 ■ 思考与练习

编写一个程序,用for循环输出1—100之间的所有偶数。

提示:能被2整除的数为偶数,在Java语言中可以用取余运算符%来判断某个数值是否是偶数。例如 a%2的运算结果如果是0,则a为偶数。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论