for循环
for循环
我们将要更加的深入地去学习循环结构for循环结构。
while循环与for循环的比较
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class WhileTest {
public static void main(String[] args) {
int i =1;
while(i<=20) {
System.out.println("我爱你");
i++;
}
}
}
public class ForTest {
public static void main(String[] args) {
for(int i = 0;i <= 20;i++) {
System.out.println("我爱你");
}
}
}
从以上代码看来,for循环类型要简洁。
|- 语法:
for(表达式1;表达式2;表达式3) {
循环操作
}
|- for循环流程:
for循环中三个表达式的含义
表达式 |
形式 |
功能 |
举例 |
表达式1 |
赋值语句 |
循环结构的初始部分,为循环变量赋初值 |
int i = 0; i的作用域仅在for中 |
表达式2 |
条件语句 |
循环结构的循环条件 |
i <20 |
表达式3 |
赋值语句,通常使用++或—运算符 |
循环结构的迭代部分,通常用来修改循环变量的值 |
i++ |
|- 问题1:循环输出某同学的五门考试成绩,并计算平均分。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double score; // 用于保存成绩
double sum = 0;// 用于保存总成绩
int avg; // 用于保存平均分
for(int i = 1;i <= 5;i++) {
System.out.print("五门课中第"+i+"门成绩是: ");
score = input.nextInt();
sum = sum + score; // sum += score;
}
avg = (int)sum / 5;
System.out.print("五门课总成绩是: " + sum);
System.out.print("\n五门课平均分是: " + avg);
}
}
|- 问题2:输入一个整数,根据这个数字打印一个加法表:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = 0;
System.out.print("请输入一个数字: ");
num =input.nextInt();
for(int i = 0,j = num;i <= num;i++,j--) {
System.out.println(i + " + " + j + " = " + (i + j));
}
}
}
|- 问题3:打印一个乘法表
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class Test {
public static void main(String[] args) {
fn(9);
}
/**
*@param num
* num以内的乘法表
*/
private static void fn(int num) {
for(int i = 1; i <= num; i ++) {
for(int j = 1; j <= i; j ++) {
System.out.print(j + "x" + i + "=" + i * j + " ");
}
System.out.println();
}
}
}
使用for循环常见错误
错误原因 |
运行代码 |
运行结果 |
缺少循环变量初始化 |
for(;i<4;i++) { System.out.println("大家好"); } |
出现错误,没有定义变量i |
缺少条件判断语句 |
for(int i = 0;;i++) {// 分号是不能少的 System.out.println("大家好"); } |
死循环 |
缺少迭代部分 |
for(int i = 0;i<4;) {// 分号是不能少的 System.out.println("大家好"); } |
死循环 |
什么都缺 |
for(;;) {// 分号是不能少的 System.out.println("大家好"); } |
死循环 |
循环结构总结
|- 语法
while 循环 while(<条件>) { // 循环体 } |
do-while循环 do { // 循环体 }while(<条件>); |
for循环 for(初始化;条件;迭代) { // 循环体 } |
|- 执行顺序
|- while循环:先进行条件判断,再执行循环体,如果条件不成立,退出循环
|- do-while循环:先执行循环体,再进行条件判断,循环体至少执行一次。
|- for循环:先执行初始化部分,再进行条件判断,然后执行循环体,最后进行迭代部分的计算,如果条件不成立,跳出循环。
|- 使用情况
在解决问题时,对于循环次数确定的情况,通常选用for循环,对于循环次数不确定的情况,通常选用while和do-while循环。
各种循环结构的执行顺序