控制语句

java控制语句:

  •           选择结构:if语句,switch语句;
  •           循环结构:for,while,do while;
  •           控制循环:break,continue;

1、if语句

if语句被称为分支语句。
if语句的4种编写方式:
     1、if(布尔表达式){                  //表达式结果只能为真或假。----->可能都不执行
                     java语句;
                     java语句;
                     .......
              }    2、if(布尔表达式){                 //条件为真,   执行if。  ----->保证会执行其中一个分支
                    java语句;
                    java语句;
                    .......
             }else{                                       //条件为假,   执行else括号内容
                    java语句;
                    .......
             }    3、if (布尔表达式){                          // ----->if语句只要有一个分支执行,整个If语句就结束
                     java语句;
                     java语句;
                     .......
     
              }else if(布尔表达式){
                     java语句;
                     .......
              
              }else if(布尔表达式){
                     java语句;
                     .......             }
    4、if (布尔表达式){                          //比起第3 种有else分支
                     java语句;
                     java语句;
                     .......
              }else if(布尔表达式){
                     java语句;
                     .......
              }else if(布尔表达式){
                     java语句;
                     .......             }else{
                     java语句;
                     java语句;
              }

注意:

  1. 带有else分支的可以保证一定会有分支执行。
  2. 所有的控制语句都可以嵌套使用,在合理嵌套的情况下。

举例代码:

/*
		需求:判断当前天气
			  晴天:天气温度30度以上:性别男--->戴墨镜;性别女---->擦防晒
			  下雨:带雨伞  ---->  男带大黑伞,女带粉色伞 


*/
public class IfTest03
{
	public static void main(String[] args){
			java.util.Scanner s = new java.util.Scanner(System.in);
			System.out.println("进入天气智能穿戴系统:");
			
			//接收天气
			System.out.print("选择下雨/1 或 晴天/2: ");	
			int num = s.nextInt();
			
			if(num != 1 & num !=2){
				System.out.println("无效,天气请从1或2中选择!");
				return;
			}//这里应该加上返回,否则会继续进行性别输入判断

			//接收性别
			System.out.print("男/1 或 女/0? ");
			int sex = s.nextInt();
			//这里应该加上返回,否则会继续进行温度输入判断

			if(sex != 0 & sex !=1){
				System.out.println("无效,性别请从0或1中选择!");
				return;
			}

			if (num == 1)
			{
				System.out.println("下雨啦~");
				System.out.print("  性别是:" + sex);

				if(sex == 1){
					System.out.print("  请带大黑伞!");
				}else{
					System.out.print("  请带粉红伞!");
				}

			}else{
				
				//接收温度
				System.out.print("请告知当前温度: ");
				int temperature = s.nextInt();

				System.out.println("好天气!");
				System.out.print("  性别是:" + sex);
				System.out.print("  温度为:" + temperature);

				if (temperature >= 30)
				{
					if (sex == 1)
					{
						System.out.println("  注意佩戴墨镜!");
					}else{
						System.out.println("  注意携带防晒喷雾!");
					}
				}
			}
		
		//遇到疑问:声明定义的性别man可以进去,键盘输入的性别man进不去man情况条件;
		//字符串定义的性别键盘输入判别不了,整数类型的性别键盘输入ok,为什么呢?
          //这是因为声明的性别String sex = “man”;是引用数据类型,不能用==作为关系判断运算。

		//扩充知识点
		//字符串判断条件用==的时候,只是判断地址相等,字符串是否相等用compare to
		//由于键盘输入的地址与判断的字符串地址始终不相等,因此进不去相等的条件。
		
	}
}

2、switch语句

1. switch表示开关或切换。
2. 语法结构:switch(int或String类型的字面值或变量){
                                        case int或String类型的字面值或变量:
                                                     java语句;
                                                     java语句;
                                                     ......
                                                     break;       //break没有写的话会依次执行下面语句
                                         case int或String类型的字面值或变量:
                                                     java语句;
                                                     ......
                                                     break;
                                         case int或String类型的字面值或变量:
                                                     java语句;
                                                     ......
                                                     break;
                                         ......
                                         default:
                                                     java语句;
                                                     ......
                                   }3. switch执行原理:
            switch后面的小括号当中的”数据“和case后面的”数据“进行一一匹配,匹配成功的分支则执行;
             按照自上而下的顺序依次匹配;4. 分支中有break语句,则整个switch终止;
             分支中没有break语句,则直接进入下一个分支执行(不进行匹配);
             ----->该现象称为case穿透现象,[提供break语句可以避免穿透]。5. 所有分支都没有匹配成功,有default语句的话,则执行default分支中的程序。
6. switch和case后面只能是int和String类型数据,byte, short, char,也可以,因为可以自动转换为int类型。
7. case可以合并。
                         int i = 10;
                         switch(i){
                             case 1:  case 2:  case3:  case  10:
                                         System.out.println("Test code!");
                         }

举例代码:

public class SwitchTest02
{
	public static void main(String[] args){
			java.util.Scanner s =new java.util.Scanner(System.in);
			
			System.out.print("请输入周几:");
			String str = s.next();

			switch(str){
				case "周一":
						System.out.println(1);
						break;
				case "周二":
						System.out.println(2);
						break;
				case "周三":
						System.out.println(3);
						break;
				case "周四":
						System.out.println(4);
						break;
				case "周五":
						System.out.println(5);
						break;
				case "周六":    case "周日":
						System.out.println(67);
						break;
				default:
						System.out.println("error!");

			}
	}
}

switch练习作业——简单计算器实现:

循环结构:

  • 在程序中需要反复、重复执行的代码,若没有循环结构需要重复编写代码,麻烦。
  • 将需要反复执行的代码放到”循环体“,联合计数器,共同控制这段需要反复执行的代码。
  • for循环、while循环、do...while循环

3、for循环

a. for循环语法结构:
              for(初始表达式;布尔表达式;更新表达式){
                     //是需要重复执行的代码片段[循环体:由java语句构成]       
              }
         
 b. for循环的执行过程/执行原理?[很重要]
              b.1 初始表达式、布尔表达式、更新表达式都不是必须的;[分号是必须的]
              b.2 初始表达式最先执行并且整个for循环中只执行一次;
              b.3 布尔表达式必须是true/false;
              b.4 for的执行过程:
                    * 先执行初始化表达式,并且该表达式只执行一次;
                    * 判断布尔表达式的结果true or false:
                          true--->执行循环体;执行更新表达式;---->再一次判断布尔表达式.......
                          false--->循环结束;

              

举例代码1:

/*
		循环语句和条件判断语句嵌套使用:[for循环和if语句嵌套]

*/

public class ForTest04
{
	public static void main(String[] args){
			//找出1~100所有的奇数
			for(int i = 1; i <= 100; i++){
				if (i%2==1)
				{
					System.out.println("---->"+i);
				}
			}

			for (int i = 1; i < 100 ; i+=2 )
			{
					System.out.println("->"+i);   //优先该方案,代码少,效率高,循环次数较少
			}
	}
}

举例代码2:

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

			/*
			需求:九九乘法表实现

			1*1=1
			2*1=2    2*2=4
			3*1=3    3*2=6   3*3=9
			......
			......
			9*1=9    9*2=18   9*3=27   ............9*9=81
			*/

			for (int i = 1;i<=9 ;i++ )
			{
				for (int j = 1;j<=i ;j++ )
				{
						System.out.print(j+"*"+i+"="+(i*j)+"   ");
				}
				System.out.println("\r\n");   ///第"+i+"次循环
			}

	}
}

for循环练习作业——找素数:

4、while循环

while循环语句:
             1、while循环的语法结构:
                      while(布尔表达式){
                             循环体;
                      }            2、while循环的执行原理:
                      先判断布尔表达式的结果:
                             *true
                                     ——执行循环体
                                               *判断布尔表达式的结果:
                                                     *true
                                                             ——执行循环体
                                                                     *判断布尔表达式的结果:
                                                                             *true
                                                                                     ——执行循环体
                                                                                             *判断布尔表达式的结果:
                                                                                                 ......
                                                                             *false
                                                                                     ——循环结束
                                                         *false
                                                                 ——循环结束
                             *false
                                     ——循环结束            3、while循环的循环次数:
                      0~N次。
                      注意:while循环的循环体可能执行0次。

举例代码:

//while循环输出1~10

public class WhileTest02
{
	public static void main(String[] args){
		int i = 1;
		while(i <= 10){
			System.out.println(i);
			i++;
		}
		
		System.out.println("---------------------------");
		int j = 10;
		while (j>0)
		{
			//System.out.println(j--);    //相当于下面两行
			System.out.println(j);
			j--;
		}

		while (j>0)
		{
			//System.out.println(--j);    //相当于下面两行
			j--;
			System.out.println(j);			
		}

	}
}

5、dowhile循环

do..while循环:
                 1、do..while循环的语法结构:
                                 do{
                                             循环体;
                                 }while(布尔表达式);                2、do..while循环的执行原理:与while循环相似。
                3、do..while循环的执行次数:
                                 do..while循环的循环体代码片段的执行次数是:1~N次[至少一次]。                4、使用do..while循环的注意事项:
                                 do..while循环语句最终有一个分号不能丢了。

举例代码:

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

		int i =10;
		do{
			System.out.println("i的值为:"+i); //10,do..while循环至少执行一次
		}while(i>50);

		System.out.println("**********************************");

		while(i>50){
			System.out.println("i值为:"+i);  //不满足条件,不会执行
		}

		System.out.println("**********************************");

		int z = 10;
		do{
			System.out.print("--->"+z);      //10,9,8,7,6,5,4,3,2,1
			z--;
		}while(z>0);
	
	}
}

6、break语句

java控制语句中的break语句:
        1、break:关键字,”中断/折断“。
        2、break;--->可以成为一个单独完整的java语句。
        3、break语句使用在switch语句中用来终止switch的语句的执行。
        4、break语句同样可以使用在循环语句当中,用来终止循环的执行。
        5、break用来终止哪个循环?
        6、break使用在for\while\do..while循环语句中用来跳出循环,终止循环的执行。
        8、默认情况下,break终止的是内层for循环,即离他最近的循环语句。
        9、也可以中断指定的某层循环,需要对不同循环起名字。

举例代码:

public class BreakTest01
{
	public static void main(String[] args){
		for (int i=1; i<10; i++)
		{
			if (i > 5)
			{
				break;
			}
			System.out.print(i);    //1, 2, 3, 4, 5
		}

		System.out.println("****************两层循环*******************");

		for (int j = 1; j<5; j++ )
		{
				for (int i=1; i<10; i++)
				{
						if (i > 5)
						{
							break;
						}
				System.out.print(i);    //1, 2, 3, 4, 5; 1, 2, 3, 4, 5; ......
				}
		}

		System.out.println("****************带名字的两层循环*******************");
		
		//给for循环起名字for1,for2
		for1:for (int j = 1; j< 8;j++ )
		{
			for2: for (int i = 1;i<10 ;i++ )
			{
				if (i == 5)
				{
					break for1;    //如果i=5则外层循环都终止:
				}
				System.out.print(i);   //1,2,3,4,5
			}
		}
		//上述java语句使用较少	
	}
}

7、continue语句

break、continue和return的区别:

break:跳出当前层循环;

continue:跳过本次循环,进入下一次循环;

return:跳出当前方法的循环;

continue语句:
         1、continue:继续/下一个
         2、continue也是循环语句中用来控制循环的执行
         3、break和continue的区别:
                  *break:表示循环终止;
                  *continue:表示直接从---->更新表达式----->开始执行;
         4、continue也有以下语法:
                  *continue  循环名称;

举例代码:

public class ContinueTest01
{
	public static void main(String[] args){
		 for (int i = 1;i<10 ;i++ )
		{
			    if (i ==5)
			    {
				     break;
			    }
			   System.out.println(i);	
		}
		System.out.println("Hello WORLD");

		System.out.println("******************上break,下continue**********");
		for (int i = 1;i<10 ;i++ )
		{
			    if (i ==5)
			    {
				     continue; //只要这个语句执行,当前本次循环停止,直接进入下一次循环继续执行
			    }
			   System.out.println(i);	
		}
		System.out.println("Hello WORLD");
	}
}