一.循环结构:
1.什么是循环结构:
意为:在某些条件满足的情况下,反复执行特定代码的功能。
二.循环语句分类:
2.1 - for循环
2.2 - while循环
2.3 - do-while循环
三.循环语句的四个组成部分:
- 1.初始化部分(int_statement)
- 2.循环条件部分(test_exp) ----->注意是boolean类型
- 3.循环体部分(body_statement)
- 4.迭代部分(alter_statement)
四. For循环结构的使用
1.For循环结构(这里的数字是:循环语句的四个组成部分的数字编号)
for(1;2;4;){
3;
}
执行过程:1-->2-->3-->4-->2-->3-->4
五.While循环的使用
while循环结构(这里的数字是:循环语句的四个组成部分的数字编号)
1
while(2){
3;
4;
}
执行过程:1-->2-->3-->4-->2-->3-->4-->2
注意说明:
1.写while循环千万小心不要丢了迭代条件,一旦丢了,就可能导致死循环。
2.我们写程序,要避免出现死循环。
3.for循环和while循环是可以相互转化的!
!!!区别:for循环和while循环的初始化条件部分的作用范围不同。!!!
六.do-while循环的使用:
do-while(这里的数字是:循环语句的四个组成部分的数字编号)
1
do{
3;
4;
}while(2);
执行过程:1-->3-->4-->2-->3-->4-->2-->3 ...--->2
注意说明:
1.do-while循环至少会执行一次循环体
2.开发中,使用for和while更多一些,do-while较少。
七.练习题
for循环
/**
* 例题:
* 1.遍历100以内的偶数,并输出所有偶数的和.输出偶数的个数.
* 2.遍历100以内的奇数,并输出所有奇数的和.
* 3.编写程序从1循环到50,并在每一行打印一个值,另外在每个3的倍数行上打印出"foo",在每个5行的倍数行上打印"biz",在每个7的倍数行上打印输出"baz".
* 4.打印1~100之间所有是7的倍数的整数的个数及总和(体会计算器的思想)。
* 5.输入两个整数m和n,求其最大公约数和最小公倍数。比如:12和20的最大公约数是4,最小公倍数是60.说明:break关键字的使用。
* 6.输出所有水仙花数,所谓水仙花数是指一个三位数,其各个位上数字立方和等于其本身。例如:153=1*1*1+5*5*5+3*3*3
*/
//例题1:
public void first() {
//定义变量sum,来记录所有的偶数.
int sum = 0;
//定义变量count,来记录偶数的个数.
int count = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
System.out.println(i);
sum += i;
count++;
}
}
System.out.println("偶数和为:" + sum);
System.out.println("偶数总个数为:" + count);
}
//例题2:
public void tow() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 != 0) {
System.out.println(i);
sum += i;
}
}
System.out.println("奇数之和为:" + sum);
}
//例题3:
public void three() {
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();
}
}
//例题4:
public void four() {
int count = 0;
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
sum += i;
count++;
System.out.println(i);
}
}
System.out.println("7的倍数的个数:" + count);
System.out.println("7的倍数的总和:" + sum);
}
//例题5:
public void fives() {
System.out.println("请输入第一个整数:");
Integer m = scanner.nextInt();
System.out.println("请输入第二个整数:");
Integer n = scanner.nextInt();
//获得最大公约数
//1.获取两个数中的较小值
int min = (m <= n) ? m : n;
//遍历
for (int i = min; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
System.out.println("最大公约数" + i);
break;//一旦在循环中执行到break;跳出循环。
}
}
//获取最小公倍数
//1.获取两个数的最大值
int max = (m >= n) ? m : n;//需要强化部分;
//遍历
for (int i = max; i <= m*n; i++) {
if (i % m == 0 && i % n == 0) {
System.out.println("最小公倍数" + i);
break;
}
}
}
//例题6:
public void six() {
int count = 0;
for (int i = 100; i < 1000; i++) {
//这里还需要加强,
//获得百位上的数字
int hundreds = i / 100;
//获得十位上的数字
int ten = i % 100 / 10;
//获得个位上的数字
int onesplace = i % 10;
if (hundreds * hundreds * hundreds + ten * ten * ten + onesplace * onesplace * onesplace == i) {
count++;
System.out.println("水仙花数:" + i);
}
}
System.out.println("一共有" + count + "个水仙花数");
}
while循环
public static void main(String[] args) {
//遍历100以内的偶数;
int i = 1;
while (i <= 100) {
if (i % 2 == 0) {
System.out.println(i);
}
i++;
}
//出来循环后还可以调用i
System.out.println();
}
do-while循环
//遍历100以内的偶数,并计算所有偶数的和,还有个数。
public static void main(String[] args) {
int sum=0;
int count=0;
int i = 1;
do {
if (i % 2 == 0) {
System.out.println(i);
count++;
sum+=i;
}
i++;
} while (i <= 100);
System.out.println("总个数:"+count);
System.out.println("总和为:"+sum);
}