1 循环语句
1.1 while 语句
语法:while(条件表达式){
//语句块;
}
符合条件:循环继续执行;否则,循环退出
特点:先判断,在执行
示例1;
/*1~100相加*/
public class Test
{
public static void main(String[]args){
int sum=0;//用于计算总数
int i=1;//增量
while(i<=100){
sum+=i;
++i;
}
System.out.println(sum);
}
}
示例2:
/*计算10的阶乘*/
public class Test
{
public static void main(String[]argd){
int sum=1;
int i=1;//增量
while(i<=10){
sum*=i;
++i;
}
System.out.println(sum);
}
}
示例3:
/*打印100以内奇数,偶数,3的倍数*/
public class Test
{
public static void main(String[] args){
int num =0 ;//计算总数
int i = 1; //增量
while(i<100){
if(i%2==0){
System.out.println("偶数"+i);
}else{
System.out.println("奇数"+i);
}
if(i%3==0){
System.out.println("三的倍数"+i);
}
i++;
}
}
}
do..while循环
语法:do{
循环操作
}while(循环条件);
特点:先执行,在判断。最少执行一次。
示例4:
/*求1~10的倒序*/
public class Test{
public static void main(String[] args){
int i = 10;
do{
//循环体
System.out.println(i);
i--;
}while(i>=0);//循环条件
}
}
示例5:
/*求1~10的阶乘 1!+2!+3!+...+10!*/
public class Test{
public static void main(String[] args){
int num = 0;//记录总和
int i = 1;
do{
//循环体
int j =1 ;
int jc = 1;//求阶乘的和
while(j<=i){
jc*=j;
j++;
}
num+=jc;
i++;
}while(i<=10);//循环条件
System.out.println(num);
}
}
for循环
语法:
for(初始化参数;判断条件;更新循环变量){
循环体;
}
关键字:continue表示跳过当次循环,继续下次循环。
for循环的六种写法:
1、标准写法
2、表达式1省略,但在外部声明
3、表达式2省略,死循环
4、表达式3省略,但要声明在循环的内部
5、表达式1,3省略,但要声明在循环的外部和内部
6、三个表达式都省略,死循环
示例6:
/*打印0~200以内能被7整除但不能被4整除的整数*/
public class Test
{
public static void main(String[] args){
for(int i =0;i<200;i++){
if(i%7==0&&i%4!=0){
System.out.println(i);
}
}
}
}
示例7:
//斐波那契数列
public class Test{
public static void main(String[] args){
int n1=1;
int n2=1;
int next=0;
System.out.print(n1+" "+n2+" ");
for(int i=0;i<8;i++){
next = n1+n2;
System.out.print(next+" ");
n1=n2;
n2=next;
}
}
}
累加思想:1~10和用for写适合 原理:通过变量记录住每次变化的结果通过循环当地形式进行累加结果。
计数器思想:1~100之间7的 个数。通过一个变量记录数据的状态变化,也许通过循环完成。
多重循环
示例8:
/*打印
*
**
***
****
*****
*/
public class Test{
public static void main(String[] args){
//外循环控制行数
for(int i=1;i<=5;i++){
//内循环控制列数
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
示例9:
/*
打印99乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
*/
public class Test
{
public static void main(String[]args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.print("\n");
}
}
}
示例10
/* 打印
*
**
***
****
*****
*/
public class Test
{
public static void main(String[] args){
//外
for(int i =1;i<=5;i++){
//内
for(int j=5;j>0;j--){
if(j<=i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
示例11:
/*
打印正三角形
*/
public class Test{
public static void main(String[] args){
//外循环控制行数
for(int i=1;i<=5;i++){
//内循环输出空格
for(int j=i;j<5;j++){
System.out.print(" ");
}
//内循环输出※
for(int j=1;j<=i*2-1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
break语句
在循环的执行过程中,可以使用break语句对正在运行的运行进行中断
应用范围:选择结构和循环结构
范例:观察break语句
/* 输出0 1*/
public class Test
{
public static void main(String[]args){
for(int x=0;x<5;x++){
if(x==2){ //判断条件
break; //循环结束
}
System.out.println(x);
}
}
}
continue语句
Continue可以强迫循环语句跳到循环的起始处,当循环程序遇到continue的时候会结束当前的循环,跳到循环的起始处继续运行循环
应用范围:循环结构
范例: 观察continue语句
/*输出0 1 3 4 */
public class Test
{
public static void main(String[]args){
for(int x=0;x<5;x++){
if(x==2){
continue;
}
System.out.println(x);
}
}
}
注:
a.这两个语句离开应用范围没有意义。
b.这两个语句单独存在后面不跟语句,z。执行不到。
c.continue是结束本次循环,继续下一次循环。
d.标号的出现可以让这两个语句作用于指定范围
总结
1.变量有自己的作用域,对于for:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。for语句执行完毕,该变量在内存中被释放。
2.for和while可以互换,如果需要定义循环增量,for更合适。
是么时候用循环结构?
当某些语句执行很多次,用循环结构。