文章目录
循环
如果要重复执行某些代码时,使用循环语句。
while
while(循环条件){//小括号中的条件结果为boolean值
满足循环条件时重复执行的代码
}
执行流程 先执行小括号中的内容,如果结果为true,执行大括号中的内容,再循环执行小括号中的内容,判断如 果为false则停止循环。
while循环有可能一次都不执行。
do-while
do{
满足循环条件时重复执行的代码
}while(循环条件);
执行流程 先执行一次do大括号中的内容,再判断while小括号中的内容,如果成立,再次执行do大括号中的内 容,如果不成立,停止循环。
do-while循环至少执行一次
while和do-while的区别
while循环可能一次都不执行,do-while循环至少会执行一次
for
//表达式1为定义循环变量
//表达式2为判断循环条件
//表达式3为更新循环变量
for(表达式1;表达式2;表达式3){
循环体
}
执行流程 首先执行表达式1,再执行表达式2,如果表达式2的结果为true,执行循环体,再执行表达式3,再执行 表达式2判断,如果表达式2的结果为false,结束循环
for循环特殊情况
//for循环特殊情况
//可以使用外部定义的循环变量
int i = 0;
for (;i<=10;i += 2) {
System.out.println(i);
}
//可以在循环体重更新循环变量
int i = 0;
for (;i<=10;) {
System.out.println(i);
i += 2;
}
//两个分号必不可少,如果都不写表达式,是一个死循环
int i = 0;
for (; ; ) {
if (i > 10) {
break;
}
System.out.println(i);
i += 2;
}
循环控制
break和return
-
所有的循环都可以使用break和return停止循环。
-
break是停止循环后,继续执行循环之外的内容。
-
return是结束方法,不再执行return之后的内容。
continue
在循环语句中,使用continue,可以停止本次循环,不再执行continue之后的代码,直接进行下一次循环。
循环总结
-
如果已知循环次数,推荐使用for循环。如遍历数组、集合等。
-
如果未知循环次数,推荐使用while循环。 while循环和for循环可以相互转换
-
do-while循环至少执行一次,for循环和while循环有可能一次都不执行
循环嵌套
如果一个重复的过程还需要将其整体重复执行时,可以使用循环嵌套。
如循环判断密码是否输入正确,正确后循环打印功能菜单。
循环嵌套就是循环一个循环。
//用*打印矩形
//将循环一行这件事再循环5次
for (int n = 1; n <= 5; n++) {
//循环打印一行
for (int i = 1; i <= 10; i++) {
System.out.print("*");
}
System.out.println();
}
穷举法
将所有可能的情况一一列举出来
//鸡兔同笼 笼子里有若干鸡和兔,头一共35,腿一共94,鸡兔各几只?
for (int ji = 0; ji <= 35; ji++) {
for (int tu = 0; tu <= 35; tu++) {
if (ji + tu == 35 && 2 * ji + 4 * tu == 94) {
System.out.println("鸡:" + ji + "兔:" + tu);
}
}
}
//百元买百蛋 花够100元买够100个蛋 鸡蛋3个1元 鸭蛋1个3元 鹅蛋1个5元
for (int jd = 0; jd <= 100; jd++) {
for (int yd = 0; yd <= 100; yd++) {
for (int ed = 0; ed <= 100; ed++) {
//整数间相除为整数,这里鸡蛋的价格需要用浮点数表示
if (jd + ed + yd == 100 && 3 * yd + 5 * ed + jd / 3.0 == 100){
System.out.println("鸡蛋:" + jd + "鸭蛋:" + yd + "鹅蛋:" + ed);
}
}
}
}
打印99乘法表
/**
* 99乘法表
*/
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
System.out.print("\n");
}
作业
计算1!+2!+…+10!
/**
* 1!+2!+3!++++10!==?
*/
int sum = 0;//最终
for (int i = 1; i <= 10; i++) {
int sum1 = 1;//阶乘
for (int j = 1; j <= i; j++) {
sum1*=j;//
}
System.out.println(i+"的阶乘:"+sum1);
sum+=sum1;
}
System.out.println(sum);
猴子吃桃。假如一只猴子第一天摘了若干桃子,吃了一半多一个,第二天继续吃了剩下的一半多一 个。。。到第十天吃了最后一个。第一天摘了几个?
int peach =1;//最后的桃子
for (int i = 9; i > 0; i--) {
peach=(peach+1)*2;
System.out.println("第"+ i +"天,有"+ peach +"桃子");
}
System.out.println("共有:"+peach);
打印1-10000以内的完数。完数:如果一个数的非自身因子和等于它本身,这个数称为完数。 如6的因子1+2+3=6,所以称6是一个完数 如28的因子1+2+4+7+14=28,所以称28是一个完数
for (int i = 1; i < 10000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i%j==0)sum+=j;
}
if (sum==i){
System.out.print(i+" ");
}
}