循环语句for循环
- 理解:循环语句具有在某些条件满足的情况下,反复执行特定代码的功能
- 循环结构分类:
- for循环
- while循环
- do-while循环
- 循环结构四要素:
- 初始化部分
- 循环条件部分 ------> 一定是boolean类型的变量或表达式
- 循环体部分
- 迭代部分
for循环
基本语法
语法格式:
for (①初始化部分; ②循环条件部分; ④迭代部分){
③循环体部分;
}
**执行过程:**①-②-③-④-②-③-④-②-③-④-…-②
图示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svZ1zzRd-1689652051575)(F:\BaiduNetdiskDownload\image-20220315013023236.png)]
说明:
- for(;;)中的两个;不能多也不能少
- ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
- ②循环条件部分为boolean类型表达式,当值为false时,退出循环
- ④可以有多个变量更新,用逗号分隔
案例1:使用for循环重复执行某些语句
题目:输出5行HelloWorld
//输出5行helloworld
class ForTest{
public static void main(String[] args){
for(int i = 0; i < 5 ;i++){
System.out.print("HelloWorld");
}
}
}
案例2:格式的多样性
题目:写出输出的结果
public class ForTest2 {
public static void main(String[] args) {
int num = 1;
for(System.out.print("a");num < 3;System.out.print("c"),num++){
System.out.print("b");
}
}
} //输出:abcbc
案例3:累加的思想
题目:遍历1-100以内的偶数,并获取偶数的个数,获取所有的偶数的和
class ForTest3{
public static void main(String[] args){
int sum = 0;
int count = 0;
for(int i = 1;i <= 100;i++){
if(i%2==0){
count++;
sum += i;
}
}
System.out.print("1-100以内有"+count+"个偶数");
System.out.print("和为"+sum);
}
}
案例4:结合分支结构使用
题目:输出[100,1000)所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
class ForTest4{
public static void main(String[] args){
int count = 0;
for(int i = 100;i < 1000; i++ ){
int ge = i % 100 % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if( i == ge*ge*ge + shi*shi*shi + bai*bai*bai){
count++;
System.out.println(i);
}
}
System.out.println("共有"+count+"个水仙花数");
}
}
拓展:
打印出四位数字中“个位+百位”等于“十位+千位”并且个位数为偶数,千位数为奇数的数字,并打印符合条件的数字的个数。
class ForTest5{
public static void main(String[] args){
int count = 0;
for(int i = 1000;i < 10000;i++){
int qian = i / 1000;
int bai = i / 100 % 10;
int shi = i / 10 % 10;
int ge = i % 10;
if(ge+bai==shi+qian){
if(ge%2==0 && qian%2==1){
System.out.println(i);
count++;
}
}
}
System.out.println("共有"+count+"个");
}
}
案例5:结合break的使用
说明:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。
约数:12为例,约数有1,2,3,4,6,12
20为例,约数有1,2,4,5,10,20
公约数有1,2,4,最大公约数为4
倍数:12为例,倍数有12,24,36,48
20为例,倍数有20,40,60,80
公倍数是60,120,
最小公倍数是60
import java.util.Scanner;
public class ForTest6{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个正整数m和n");
int m = scan.nextInt();
int n = scan.nextInt();
int min = (m - n)<0 ? m : n;
//最大公约数
int gcd = 1;
for(int i = min;i >= 1;i--){
if(m % i == 0 && n % i == 0){
gcd = i;
break;
}
}
//最小公倍数
//int lcm = m * n / gcd; 公式
int lcm = 1;
int max = (m -n) > 0 ? m : n;
//最小公倍数
for(int i = max; i <= m * n ; i++){
if(i%m==0 && i%n==0){
lcm = i;
break;
}
}
System.out.println(m+"和"+n+"的最大公约数是"+gcd+",最小公倍数是"+lcm);
}
}
说明:
1、我们可以在循环中使用break。一旦执行break,就跳出当前循环结构。
2、小结:如何结束一个循环结构?
结束情况1:循环结构中的循环条件部分返回false
结束情况2:循环结构中执行了break。
3、如果一个循环结构不能结束,那就是一个死循环!我们开发中要避免出现死循环。
练习
**练习1:**打印1~100之间所有奇数的和
public class Exercise1{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i % 2 == 1){
sum += i;
}
}
System.out.println("1~100之间所有奇数的和为"+sum); //2500
}
}
**练习2:**打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想)
public class Exercise2{
public static void main(String[] args){
int count = 0;
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i % 7 == 0){
count++;
sum += i;
}
}
System.out.println("1~100之间所有是7的倍数的整数的个数有"+count+"个");
System.out.println("总和为:"+sum);
}
}
练习3:
编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
public class Exercise3{
public static void main(String[] args){
for(int i = 1; i <= 150;i++){
System.out.print(i);
if(i%3==0){
System.out.print("foo");
}
if(i%5==0){
System.out.print("biz");
}
if(i%7==0){
System.out.print("baz");
}
System.out.println();
}
}
}
//注意:此处不能使用if-else,因为有的数字同时会满足多个情况,而if-else是多选一的情况,如果使用if-else会漏选。
System.out.print("biz");
}
if(i%7==0){
System.out.print("baz");
}
System.out.println();
}
}
}
//注意:此处不能使用if-else,因为有的数字同时会满足多个情况,而if-else是多选一的情况,如果使用if-else会漏选。