1.for循环语法
【语法格式】
for(初始化表达式; 循环条件表达式; 循环后的操作表达式) {
执行语句;
}
重点:掌握for循环的执行顺序。初始化表达式最先执行,并且在循环过程中只执行一次。
2.for循环注意点
-
“循环初始化表达式”最先执行,并且永远只执行一次!
-
在“循环初始化表达式”中声明的变量,我们称之为“循环变量”。
“循环变量”属于局部变量,只能在循环中使用,不能在循环之外使用。
-
请问以下代码输出的结果是什么???
// 演示一
int i = 1; // 出生
for(; i <= 100; i++) {
System.out.println(i);
}
System.out.println("循环之外:" + i); // 输出:101
// 演示二
for(int i = 10, j = 2; j < 7; j += 3, i -= 2) {
System.out.println("i:" + i + " j:" + j);
}
// 第一趟输出:"i:10 j:2"
// 第二趟输出:"i:8 j:5"
-
“循环初始化表达式”和 “循环后的操作表达式”没有限制,只需要符合语法即可!
“循环条件表达式”要求返回的结果必须是boolean类型,否则编译错误!
3.for循环练习
1、 输出0(包含)到100(包含)之间的数, 以递减的方式实现;
for(int i = 100; i >= 0; i--) {
System.out.println(i);
}
2、 输出1到100之间的奇数;
/**
* 步骤分析
* a)通过for循环,获得[1, 100]之间的所有整数,假设循环变量为i。
* b)在循环体中,判断i是否为奇数。
* 当i%2!=0时,证明i是一个奇数!
*/
for(int i = 1; i <= 100; i++) {
if(i % 2 != 0) {
System.out.println("奇数:" + i);
}
}
3、 输入一个正整数n,计算1+2+3+…+n的和;
/**
* 步骤分析:
* a)通过Scanner获得一个正整数,假设使用变量n来保存。
* b)通过for循环,获得[1, n]之间所有的正整数,假设循环变量为i。
* c)在循环前面定义一个变量(sum),用于保存1+2+3+…+n的和。
*/
// 1.通过Scanner获得一个正整数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n = input.nextInt();
// 2.通过for循环,获得[1, n]之间所有的正整数
int sum = 0; // sum出生
for(int i = 1; i <= n; i++) {
// 3.计算1+2+3+…+n的和
sum += i;
}
System.out.println("sum:" + sum);
4、 输入一个正整数n,计算1-2+3-4+5-6+…-(n-1)+n的和;
/**
* 步骤分析:
* a)通过Scanner获得一个正整数,假设使用变量n来保存。
* b)通过for循环,获得[1, n]之间所有的正整数,假设循环变量为i。
* c)在循环前面定义一个变量(sum),用于保存1-2+3-4+5-6+…-(n-1)+n的和;
* 当i为奇数时,执行累加操作;当i为偶数时,执行累减操作。
*/
// 1.通过Scanner获得一个正整数
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int n = input.nextInt();
// 2.通过for循环,获得[1, n]之间所有的正整数
int sum = 0;
for(int i = 1; i <= n; i++) {
// 3.计算1-2+3-4+5-6+…-(n-1)+n的和
if(i % 2 == 0) { // 偶数
sum -= i;
}
else { // 奇数
sum += i;
}
}
System.out.println(sum);
5、 输出1到1000之间既能被5整除又能被3整除的数,并且每行输出5个。
/**
* 步骤分析:
* a)通过for循环获得[1, 1000]之间所有的整数,假设循环变量为i。
* b)在循环体中,判断i是否既能被5整除又能被3整除,满足该条件则输出i的值。
* 输出i的值时,不要做换行操作。 System.out.print(i);
* c)把符合条件的数每行输出五个!
* 1)定义一个变量(count),用于保存符合条件数的个数。
* 2)当i既能被5整除又能被3整除,则符合条件的数+1。
* 3)判断count的值为5的倍数,则执行换行操作!
*/
// 1.通过for循环获得[1, 1000]之间所有的整数
// a)定义一个变量,用于保存符合条件数的个数。
int count = 0;
for(int i = 1; i <= 1000; i++) {
// 2.判断i是否既能被5整除又能被3整除
if(i % 5 == 0 && i % 3 == 0) {
// 满足以上条件,则输出i的值
// System.out.print(i + '\t'); // 错误
System.out.print(i + "\t"); // 正确
// b)当i既能被5整除又能被3整除,则符合条件的数+1。
count++;
// c)判断count的值为5的倍数,则执行换行操作!
if(count % 5 == 0) {
System.out.println();
}
}
}
6、 求100到999之间的水仙花数。水仙花数的每个位上的数字的3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
/**
* 步骤分析:
* a)通过for循环获得[100, 999]之间所有的整数,假设循环变量为i。
* b)在循环体中,获得i的个位数(bit1)、十位数(bit2)和百位数(bit3)。
* c)要求满足:bit1*bit1*bit1 + bit2*bit2*bit2 + bit3*bit3*bit3 == i
*/
// 1.通过for循环获得[100, 999]之间所有的整数
for(int i = 100; i < 1000; i++) { // i = 153
// 2.获得i的个位数(bit1)、十位数(bit2)和百位数(bit3)
int bit1 = i % 10;
int bit2 = i % 100 / 10;
int bit3 = i / 100;
// 3.要求满足:bit1*bit1*bit1 + bit2*bit2*bit2 + bit3*bit3*bit3 == i
if(bit1*bit1*bit1 + bit2*bit2*bit2 + bit3*bit3*bit3 == i) {
System.out.println("水仙花数:" + i);
}
}
7、 编程找出四位整数abcd 中满足下述关系的数,(ab+cd)*(ab+cd)=abcd(例如:(20 + 25) * (20 + 25)= 2025)。
/**
* 步骤分析:
* a)通过for循环获得[1000, 9999]之间所有的整数,假设循环变量为i。
* b)在循环体中,获得i的千位百位(ab)和十位个数(cd)。
* 例如:i的值为2025,那么i%100就得到了25(cd),i/100就得到20(ab)。
* c)要求满足:(ab+cd)*(ab+cd) == i
*/
// 1.通过for循环获得[1000, 9999]之间所有的整数
for(int i = 1000; i < 10000; i++) { // i = 2025
// 2.获得i的千位百位(ab)和十位个数(cd)。
int ab = i / 100;
int cd = i % 100;
// 3.要求满足:(ab+cd)*(ab+cd) == i
if((ab+cd)*(ab+cd) == i) {
System.out.println(i);
}
}
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。