循环结构:
while语句
格式:
定义初始化表达式;
while(条件表达式)
{
执行语句;
}
eg.
(1-100的和):
package org.westos.www;
/*
* 1-100的和
*/
public class WhileDemo
{
public static void main(String[] args)
{
int sum=0;
int i=100;
while(i>1)
{
sum+=i;
i--;
}
System.out.println("sum="+sum);
}
}
eg.
(补考):
package org.westos.www;
import java.util.Scanner;
public class WhileExam
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
int count=0;
System.out.println("请输入考试成绩:");
int score=scan.nextInt();
while(score<60)
{
count++;
System.out.println("当前不及格,这是第"+count+"次补考");
System.out.println("*****补考中*******");
System.out.println("请输入补考后的成绩");
score=scan.nextInt();//是阻塞键盘等待用户输入int类型的值,用户输入之前一直阻塞。
}
System.out.println("恭喜你,及格了!");
scan.close();
}
}
do while语句
格式:
do
{
执行语句;
}while(条件表达式);
while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。无论条件是否满足,循环体至少执行一次。
for语句
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
eg.
( 实现1-100能被3整除不能被5整除的数的和)
package org.westos.www;
public class DivideFor
{
public static void main(String[] args)
{
int sum=0;
for(int i=1;i<=100;i++)
{
if(i%3==0&i%5!=0)
{
sum+=i;
}
}
System.out.println("sum="+sum);
}
}
for和while的区别:
//注意:作用范围的问题,导致以下结果不同。
//x在内存中生成,执行完后消失;而y在内存中生成,执行完后还在内存中。
eg.
for(int x=0;x<3;x++)
{
System.out.println.("x="+x);
}
System.out.println.("x====="+x);
int y=0;
while(y<3)
{
System.out.println("y="+y);
}
System.out.println("y====="+y);
1.变量有自己的作用域。对于for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for循环内有效。for语句执行完毕,该变量在内存中被释放。
2.for和while可以进行互换。如果需要定义循环增量,用for更合适。
总结:
什么时候使用循环结构?
当对某些语句执行很多次时,就使用循环结构。
!定义一个变量,这个变量的数值变化是有规律的,
用循环操作了这个变量后,还要在下面的代码中使用这个结果,用while
循环合适。
循环语句的其他特点:
for(System.out.println("a");System.out.println("b");System.out.println("c"))
{
System.out.println("d");
}
//执行结果是:编译是失败的。因为循环条件表达式,也就是第二步,不知是真是假。
int x=1;
for(System.out.println("a");x<3;System.out.println("d"),x++)
{
System.out.println("d");
}
//多表达式出现时,用,隔开。
//编译通过,结果是adcdc
条件表达式必须有真假,才能执行。
无限循环的最简单表达形式:
1.for(; ;) {}
2.while(true)
for语句-累加&计数器
eg.
(获取1-10的和,并打印)
public static void main(String [] args)
{
int sum=0;//1.定义变量用于存储不断变化的和。
int x=1;//2.定义变量,记录住不断变化的被+的数。
while(x<=10)//3.定义循环,重复加法的过程。
{
sum+=x;
x++;
}
System.out.println("sum="+sum);
}
循环注意:
一定要明确哪些语句需要参与循环,哪些不需要。
int sum=0;
for(int x=1;x<=10;x++)
{
sum+=x;
}
System.out.println("sum="+sum);
eg.
(1-100之间7的倍数的个数,并打印)
思路:
1.先对1-100进行循环(遍历)通过循环的形式
2.在遍历的过程,只对7的倍数进行操作
3.因为7的倍数不确定,只要符合条件,就通过一个变量来记录住这个变化的次数。
步骤:
1.定义循环语句,用for比较合适
2.在循环中定义判断,只要是7的倍数即可。使用if语句(x%7==0)
3.定义变量,该变量随着7的倍数的出现而自增
int count=0;
for(int x=1;x<=100;x++)
{
if(x%7==0)
count++;
}
System.out.println("count="+count);
累加思想:
原理:通过变量来记录住循环操作后的结果。每次变化的结果通过循环的形式,进行累加的动作。
计数器思想:
原理:通过一个变量记录住数据的状态变化,也需要通过循环完成。
for嵌套
eg.
****
****
****
for(int x=0;x<3;x++)
{
for(int y=0;y<4;y++)
{
System.out.print("*");
}
System.out.println();
}
对于打印长方形:外循环控制行数,内循环控制列数,也就是一行中算式的个数。
eg.
*****
****
***
**
*
int z=5; //int z=0;
for(int x=0;x<5;x++)
{
for(y=0;y<z;y++)//(y=z;y<5;y++)
{
System.out.print("*");
}
System.out.println();
z--; //z++
}
for(int x=0;x<5;x++)
{
for(y=x;y<5;y++;)
{
System.out.print("*");
}
System.out.println();
}
eg.
*
**
***
****
*****
for(int x=0;x<5;x++)
{
for(int y=x;y<=5;y++)
{
System.out.print("*");
}
System.out.println();
}
eg
1
12
123
1234
12345
for(int x=1;x<=5;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print("y");
}
System.out.println();
}
尖朝下,可以改变初始值,让初始值随着外循环变化。
尖朝上,可以改变条件,让条件随着外循环变化。
eg.
(九九乘法表)
for(int x=1;x<=9;x++)
{
for(int y=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
break(跳出)&continue(继续)
break语句:作用于选择结构和循环结构
eg.
w:for(int x=0;x<3;x++)
{
q:for(int y=0;y<5;y++)
{
System.out.print("x="+x);
} break w;
}
continue:只能作用于循环结构。表示继续循环。特点:结束本次循环,继续下一次循环。
eg.
for(int x=0;x<3;x++)
{
continue;
System.out.println("x="+x);
}
//执行不到continue以下的语句,编译失败。
for(int i=0;i<=10;i++)
{
if(i==5)
{
continue;
}
System.out.println("好好学习"+i);
}
eg.
for(int x=1;x<=10;x++)
{
if(x%2==1)
continue;//if条件满足后继续循环,x++,直到不满足if,打印一次x=2,打印偶数。
System.out.println("x="+x);
}
eg.
好好学习0
好好学习1
好好学习2
好好学习3
好好学习4
好好学习6
好好学习7
好好学习8
好好学习9
好好学习10
for(int a=0;a<5;a++)
{
for(int b=a+1;b<5;b++)
{
System.out.print("-");
}
for(int c=0;c<=a;c++)
{
System.out.print("* ");
}
System.out.println();
}
eg.
好好学习0
好好学习1
好好学习2
好好学习3
好好学习4
for(int i=0;i<10;i++)
{
if(i==5)
{
break;
}
System.out.println("好好学习"+i);
}
总结:
1.break和continue语句作用的范围。
2.break continue单独存在时,下面可以有任何语句,因为都执行不到。
eg.
----*
---* *
--* * *
-* * * *
* * * * *
for(int a=0;a<5;a++)
{
for(int b=a+1;b<5;b++)
{
System.out.print("-");
}
for(int c=0;c<=a;c++)
{
System.out.print("* ");
}
System.out.println();
}