for循环
适用于 区间判断 | 确定循环次数 的场合
执行流程:
1.条件初始化
2.条件判断
3.不满足条件结束循环;满足条件则执行循环体语句体
4条件变量
注意: 条件初始化只执行一次
语法结构:
for (条件初始化; 条件判断 ; 条件变化){
循环体语句;
}
条件初始化 : 声明变量,初次赋值 如 : int i = 1;
条件判断 : 对条件|变量 进行判断,若满足要求,即结果为true,则执行本次循环体语句 { 大括号中的代码 } ;
如果结果为dalse ,即不满足要求, 则本次循环不可执行, 循环直接结束
条件变化: 自身值的改变 如每次循环i自加1 ,i++;
注意: 其中 i 有两个地方要注意
- 可以用来控制循环的次数,可以在循环体中当数据使用,且此数据是可变的
- 只能在循环体语句中使用(有固定的作用域)
举例: 循环打印十次,“我爱java,java爱我!!!”;
求1到10之间的和;
//循环打印十次,"我爱java,java爱我!!!!";
for(int i = 1; i <= 10; i++){
System.out.println("我爱java,java爱我!!!!");
}
//求1到10之间的和;
int sum = 0;
for(int i = 1; i <= 10; i++){
sum += i;
}
System.out.println(sum);
while 循环
适用于条件不需要声明,条件变化也无需声明的场合
语法:
条件初始化;
while(条件判断){
循环体语句;
条件变化
}
举例: 遍历1至100
int i = 1;
while (i<=100) {
System.out.println(i);
i++;
}
练习: 求1-100的偶数和,求1-100的奇数和
请找出[100,300]之间能被5整除的所有数,每行输出8个数,并在每个数后加上 " , "
// 求1-100的偶数和,求1-100的奇数和
int sum1 = 0;
int sum2 = 0;
int a = 1;
while ( a<=100 ) {
if (a % 2 == 0) {
sum1 += a;
}
if (a % 2 != 0) {
sum2 += a;
}
a++;
}
System.out.println(sum1);
System.out.println(sum2);
System.out.println("==================");
// 请找出[100,300]之间能被5整除的所有数,每行输出8个数,并在每个数后加上 " , "
int con = 0; //计数器
int c = 100; //条件初始化
while (c <= 300) {
if(c%5==0){
if(con==0){
System.out.print(c);
}else{
System.out.print(","+c);
}
con++;
if(con==8){
System.out.println();
con=0;
}
}
c++;
}
扩展:
1.死循环
//for循环的死循环
for( ; ; ){
}
//while循环的死循环
while( true ) {
}
2.定义变量欺骗编译器, 让程序得以执行
boolean flag = false;
while(flag){
System.out.println("我是while...false");
}
do…while();
do…while() 与 while() 区别:
do…while() : 无论条件是否满足都至少执行一次
while : 先判断再执行, 不满足直接结束
do…while 执行流程 : 先执行, 后判断. 满足条件则继续下一次执行. 不满足则执行本次后结束
用法:
条件初始化;
do{
语句体:
}while(条件判断);
举例: 遍历1-100
int i = 1;
do{
System.out.println(i);
i++;
}while(1<=100)
练习: 求1-100的偶数和,求1-100的奇数和
请找出[100,300]之间能被5整除的所有数,每行输出8个数,并在每个数后加上 " , "
int sum = 0;
int sum1 = 0;
int a = 1 ;
do{
if(e%2 == ){
sum += a;
}
if(e%2 != 0){
sum1 += a;
}
a++;
} while (a<=100);
System.out.println("1-100的偶数和:" + sum);
System.out.println("1-100的奇数和:" + sum1);
System.out.println("======================";
// 请找出[100,300]之间能被5整除的所有数,每行输出8个数,并在每个数后加上 " , "
int count = 0; //计数器
int b = 100; //条件初始化
do{ //循环开始
if(b%5 == 0){ //当b%5为0时
if(count==0){ //计数器为0时,即每行首位出现时
System.out.print(b); //打印b
}else{
System.out.print(","+b);//否则其他时候打印这个
}
count+; //每次循环开始,计数器都加一
if(count == 8){ //当计数器为8时,打印换行语句
System.out.println();
con11=0; //同时初始化计数器
}
}
b++; //每次循环b自加一
}while(b<=300);
双重for循环嵌套
用法:
for( 条件初始化 ; 条件判断 : 条件变化 ){ //控制行
//代码 ;
for( 条件初始化 ; 条件判断 : 条件变化 ){ //控制列
//代码 ;
}
//代码 ;
}
特点: 外层循环执行一次,内层循环执行一轮 ( 从开始到结束 )
//打印出如下图案
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
//普通循环
int count = 0; //计数器
for (int i = 1; i <= 25; i++){ //控制循环范围
System.out.print("* "); //打印*,且不换行
count++; //计数器加一
if(count == 5){ //计数器为5时
System.out.println(); //打印换行
}
}
//双重for循环
for (int i = 1; i <= 5; i++){ //外循环 控制行数
for (int j = 1; j <= 5; j++){//内循环 控制列数
System.out.print("* "); //只管打印*,由外循环控制换行
}
System.out.println();//换行
}
//打印九九乘法表
for (int i =1; i<=9; i++) {
for (int j = 1; j<=i; j++){
System.out.println(j+"*"+i+"="+(j*i));
}
}