Java系列5—循环语句

循环语句

循环结构:
在程序当中总有一些需要反复执行的代码,假设没有循环结构,这些重复执行的代码需要重复编写,代码无法得到重复使用。所以多数编程语言都是支持循环结构的,将来把需要反复执行的代码片段放到“循环体”,再联合计数器,共同控制这段需要反复执行的代码。

在Java中循环结构分为三种:

  • for循环
  • while循环
  • do…while循环

一、for循环

  1. for循环基础语法

    /*
    	1、当前示例主要讲解for循环。for循环的语法结构如下:
    		语法结构:
    			for(初始化表达式;布尔表达式;更新表达式){
    				//需要重复执行的代码片段【由java语句构成】
    			}
    
    	2、for循环的执行过程/执行原理【*****】
    		1、初始化表达式、布尔表达式、更新表达式都不是必须的。【两个分号(;)必须要有】
    		2、初始化表达式最先执行,并且在整个for循环当中只执行一次。
    		3、布尔表达式必须是true/false,不能是其他值
    		4、for循环的执行过程:
    			* 先执行初始化表达式,并且该表达式只执行一次
    			* 判断布尔表达式的结果是true还是false
    				- 布尔表达式true
    					* 执行循环体
    					* 执行更新表达式
    						- 布尔表达式true
    							* 执行循环体
    							* 执行更新表达式
    							* 判断布尔表达式
    						- 布尔表达式false
    							循环结束		
    				- 布尔表达式false
    					循环结束
    */
    
    
    public class ForTest01
    {
    	public static void main(String[] args){
    
    		//使用循环结构代替所有需要反复执行的代码块
    		//使用循环语句可以使代码量减少
    		for(int i=0;i<=10;i++){
    			System.out.println(i);
    		}
    
    		// 无限循环
    		for(;;){
    			System.out.println("无限循环");
    		}
    	}
    }
    
  2. for循环中变量的作用域

    /*
    	for循环变量的作用域
    */
    
    public class ForTest02
    {
    	public static void main(String[] args){
    
    		// 以下循环中,i变量的作用域仅限于当前循环的内部使用
    		for(int i=1;i<=10;i++){
    			System.out.println("i---------->"+i);
    		}
    	
    		// System.out.println(i); //编译错误:找不到i
    		
    
    		// j变量作用于整个main函数
    		int j = 0;
    		for(;j<=10;j++){
    			System.out.println("j++++++>"+j);
    		}
    		System.out.println("j--------->"+j); //11
    		
    
    		// k变量也作用域整个main函数
    		int k;
    		for(k=0;k<=10;k++){
    			System.out.println("k------"+k);
    		}
    		System.out.println("k+++++++"+k);
    	}
    }
    
  3. for循环练习

    public class ForTest03
    {
    	public static void main(String[] args){
    
    		// 输出1-10中所有的奇数
    		for(int i=1;i<=10;i+=2){
    			System.out.println("i++++++"+i); //1 3 5 7 9
    		}
    
    		// 输出1-10中所有的偶数
    		for(int i=2;i<=10;i+=2){
    			System.out.println("i---------"+i); //2 4 6 8 10 
    		}
    		
    		// 递减输出 10-1
    		for(int i=10;i>0;i--){
    			System.out.println("i======>"+i); //10 9 8 7 6 5 4 3 2 1
    		}
    
    		for(int i=100;i>=50;i-=10){
    			System.out.println("i-------->"+i);
    		}
    		
    		// 以下两个不一样
    		for(int i=1;i<10;){
    			System.out.println("i-------->"+i);
    			i++;
    		}
    		
    		for(int i=1;i<10;){
    			i++;
    			System.out.println("i-------->"+i);
    		}
    	}
    }
    
  4. for循环案例练习

    /*
    	循环语句和判断语句嵌套使用【for if】
    		1、判断奇数的两种方法;
    			优先使用循环次数少的方法
    
    */
    public class ForTest04
    {
    	public static void main(String[] args){
    
    		for(int i=1;i<=10;i+=2){
    			System.out.println(i+"是奇数");
    		}
    		
    		System.out.println("-----------------");
    
    		// 找出1~10中所有的奇数
    		for(int i=1;i<=10;i++){
    			if(i%2==1){
    				System.out.println(i+"是奇数");
    			}
    		}
    
    	}
    }
    
  5. 输出100以内奇数的和

    public class ForTest05
    {
    	public static void main(String[] args){
    
    		int j = 0;
    		for(int i=1;i<=100;i+=2){
    
    			// i一定是奇数
    			// 累加求和
    			j += i;
    		}
    
    		// 整个循环结束之后,输出和的值
    		System.out.println("100以内奇数的和为:"+j);
    	}
    }
    
  6. 双重循环输出9*9乘法表

    public class ForTest05
    {
    	public static void main(String[] args){
    
    		for(int i=1;i<10;i++){  
    			for(int j=1;j<=i;j++){
    				System.out.print(j+"*"+i+"="+i*j+'\t');
    			}
    			System.out.println(); // 输出一个换行
    		}
    	}
    }
    
  7. 输出1~10000中的所有素数

    /*
    	编写for循环找出1~10000中所有的素数
    	要求每8个换一行
    */
    public class ForTest07
    {
    	public static void main(String[] args){
    		
    		int count = 0;
    
    		for(int i=2;i<=10000;i++){
    			
    			//设置标志位
    			boolean isSushu = true;
    			for(int j=2;j<=i/2;j++){
    				if(i%j == 0){
    					isSushu = false;
    					break;
    				}	
    			}
    			// 第一种方法,使用三目运算符
    			// System.out.println(isSushu ?i+"是素数":i+"不是素数");
    			
    			//第二种方法
    			if(isSushu){
    				System.out.print(i+"\t");
    				count++;
    				if (count%8==0)
    				{
    					System.out.println();
    				}
    			}
    		}
    		System.out.println("素数共有:"+count);
    		
    	}
    }
    

二、while循环

  1. while循环基础语法

    /*
    	while循环语句:
    		1、while循环的语法结构
    
    			while(布尔表达式){
    				循环体
    			}
    
    		2、while循环的执行原理
    			先判断布尔表达式的结果:
    				* true
    					执行循环体
    						* 判断布尔表达式的结果
    							* true
    								...
    							* false
    								...
    				* false
    					- 循环结束
    
    		3、while循环的循环次数
    			0 ~ N次
    			注意:while循环的循环体可能执行次数为0次
    */
    
    public class WhileTest01
    {
    	public static void main(String[] args){
    
    		//无限循环
    		/*
    		while (true)
    		{
    			System.out.println("hello");
    		}
    		
    		// 编译器检测到该程序永远都无法被访问
    		// 错误: 无法访问的语句
    		System.out.println("world!");
    		*/
    		
    		int i = 10;
    		int j = 3;
    
    		//	改为10>3时,无限循环下边的代码就会编译报错
    		while(i>j){
    			System.out.println("呵呵");
    		}
    		
    		// 以下程序不会编译报错
    		System.out.println("Hello World");
    
    	}
    }
    
  2. 练习:while循环输出1~10

    /*
    	使用while循环输出1~10
    */
    
    public class WhileTest02
    {
    	public static void main(String[] args){
    
    		int i = 1;
    		while(i<=10){
    			System.out.println("i----->"+i);//1 2 3 4 5 6 7 8 9 10
    			i++;
    		}
    		
    		System.out.println("end---->"+i);
    		System.out.println("-------------------------->");
    		
    		int j = 10;
    		while(j>0){
    			System.out.println(j--);//10 9 8 7 6 5 4 3 2 1
    		}
    		System.out.println("end j------>"+j);
    
    		int k = 10;
    		while(k >= 0){
    			System.out.println(--k);//9 8 7 6 5 4 3 2 1 0 -1
    		}
    		System.out.println("end k------>"+k);
    	}
    }
    

三、do…while循环

/*
	do...while循环:
		1、do...while循环的语法结构
			do{
				循环体;
			}while(布尔表达式);

		2、do...while循环的执行原理

		3、do...while循环的执行次数:
			循环体代码片段执行次数是:1-N次【至少1次】
		
		4、使用do...while循环的注意事项:
			do...while循环语句最终有一个"分号(;)"
*/

public class DoWhileTest01
{
	public static void main(String[] args){

		int i =10;
		do{
			//至少执行一次
			System.out.println("i------->"+i);
			i++;
		}while(i>100);
		
		System.out.println("--------------");
		

		// 完整的do...while语句
		int j = 1;
		do{
			System.out.println("j-------->"+j);
			j++;
		}while(j<10);

	}
}

四、break用法

break表示终止循环,可以终结当前循环,也可以终止某个命名的循环。

/*
	break语句:
		1、break是java语句当中的关键字,被翻译为“终端/折断”
		
		2、break + ";"可以成为一个单独的完整的java语句: break;
		
		3、break语句使用在switch语句当中,用来终止switch语句执行。

		4、break语句同样可以使用在循环体中,用来终止循环的执行。

		5、break可以终止哪个循环呢?

		6、使用在for、while、do...while循环语句当中,当某个条件成立时,
			用来跳出循环。
		
		7、默认情况下:break中断最近的循环语句,
			可以给循环命名,使break中断某个循环
		
*/

public class BreakTest01
{
	public static void main(String[] args){
		
		// 1、单个循环
		for(int i=0;i<10;i++){
			if(i==5){
				// 当 i=5 时跳出循环
				break;
			}
			System.out.println("i------->"+i);
		}		
		
		// 分割线
		System.out.println("————————————————————————————————>");
		

		// 2、双层循环终止当前循环
		for(int j=0;j<3;j++){
			for(int k=0;k<10;k++){
				if(k==5){
					break;
				}
				System.out.println("k----------"+k);
			}
		}
		System.out.println("-------------------");


		//3、给循环命名
		for1:for(int j=0;j<3;j++){
			for2:for(int k=0;k<10;k++){
				if(k==5){
					break for1;
				}
				System.out.println("k----------"+k);
			}
		}
		System.out.println("Hello world!-----------");
	}
}

五、continue用法

continue表示终结本次循环,在continue之后的代码不再执行。

/*
	continue语句:
		1、continue表示:继续下一次循环
		
		2、continue也是一个continue关键字加一个分号(;)构成的一个单独的完整的java语句,
			主要出现循环语句当中用来控制循环的次数
		
		3、break和continue的区别:
			* break 表示循环不再执行
			* continue表示中断本次循环,继续下一次循环
			* continue 也可以加循环名称

*/
public class ContinueTest01
{
	public static void main(String[] args){
		
		// 1、break语句
		for(int i=0;i<5;i++){
			if(i==3){
				break;
			}
			System.out.println("i------"+i);
		}

		System.out.println("---------------------");
		
		// 2、continue
		for(int i=0;i<5;i++){
			if(i==3){
				continue;
			}
			System.out.println("i------"+i);
		}
		
		System.out.println("----------------------");

		// 3、continue 加循环名称
		for1:for(int j=0;j<5;j++){
			for2:for(int i=0;i<5;i++){
				if(i==3){
					continue for1;
				}
				System.out.println("i------"+i);
			}
			System.out.println("j+++++++++"+j);
		}
		
	}
}

你可能感兴趣的:(Java,java)