zoukankan      html  css  js  c++  java
  • 流程控制语句

    一、分支结构

    1、分支结构的概念

    • 当需要进行条件判断并作出选择时,使用分支结构

    2、if分支结构

    • if(条件表达式){

      ​ 语句块;

      }

    • 判断表达式是否成立:

      若成立,则执行语句块

      若不成立,则跳过语句块

    /*
    	编程使用if分支结构模拟网吧上午的过程
    */
    
    import java.util.Scanner;
    
    public class IfTest {
    	
    	public static void main(String [] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		//提示用户输入年龄信心并使用变量记录
    		System.out.println("请输入年龄信息:");
    		int age = sc.nextInt();
    		//用if分支结构判断是否成年并给出对应的提示
    		if(age < 18) {
    			System.out.println("很抱歉,你还未成年,无法上网");
    		}else{
    		//打印一句话
    			System.out.println("已成年,欢迎光临");
    		}
    	}
    }
    

    3、if else分支结构

    • if(条件表达式){

      ​ 语句块1;

      }else{

      ​ 语句块2;

      }

    • 判断条件表达式是否成立:

      若成立,则执行语句块1;

      若不成立,则执行语句块2;

    /*
    	编程使用if else分支结构来模拟考试成绩查询过程
    */
    
    import java.util.Scanner;
    
    public class IfElseTest {
    	
    	public static void main(String [] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		//提示用户输入考试成绩
    		System.out.println("请输入考试成绩:");
    		int score = sc.nextInt();
    		
    		//用if else分支语句判断考试成绩是否合格
    		if(score >= 60) {
    			System.out.println("恭喜考试通过!");
    		}else {
    			System.out.println("下学期来补考吧!");
    		}
    		System.out.println("世界上最遥远的距离不是生与死,而是你在if我在else,似乎一直相伴却又永远分离!");
    	}
    }
    

    4、if else if else分支结构

    • if(条件表达式1){

      ​ 语句块1;

      }else if(条件表达式2){

      ​ 语句块2;

      }else{

      ​ 语句块n;

      }

    • 判断表达式1是否成立

      =>若成立,则执行语句块1;

      =>若不成立,则判断条件表达式2是否成立

      =>若成立,则执行语句块2;

      ​ =>若不成立,则执行语句块n

    /*
    	编程实现if   else if   else分支结构的使用,模拟火车票购买的过程
    */
    
    import java.util.Scanner;
    
    public class IfElseIfElseTest {
    	
    	public static void main(String [] aegs) {
    		
    		//提示用户输入身份信息
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入身份信息:");
    		String str = sc.next();
    		
    		//使用if   else if   else分支结构进行判断
    		if("军人".equals(str)) {
    			System.out.println(str + "免费乘车");
    		}else if("学生".equals(str)) {
    			System.out.println(str + "半价购票");
    		}
    		else {
    			System.out.println(str + "全价购票");
    		}
    	} 
    }
    

    5、switch case分支结构

    • switch(变量/表达式){

      ​ case 字面值1:语句块1;break;

      ​ case 字面值2:语句块2;break;

      ​ ...

      ​ case 字面值n:语句块n;

      }

    • 计算变量/表达式 =>判断是否匹配字面值1

      =>若匹配,则执行语句块1 => 执行break跳出当前结构

      =>若不匹配,则判断是否匹配字面值2

      ​ =>若匹配,则执行语句块2 => 执行break跳出当前结构

      ​ =>若不匹配,则执行语句块n

    • switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。

    /*
    	案例:提示用户输入考试成绩,使用if-else if-else分支结构判断所在等级并打印
    			[90 ~ 100] 等级A
    			[80 ~ 89] 等级B
    			[70 ~ 79] 等级C
    			[60 ~ 69] 等级D
    			[0 ~ 59] 等级E
    */
    switch(score / 10) {
    			case 10: //System.out.println("等级A"); break; case 穿透
    			case 9: System.out.println("等级A"); break;
    			case 8: System.out.println("等级B"); break;
    			case 7: System.out.println("等级C"); break;
    			case 6: System.out.println("等级D"); break;
    			default: System.out.println("等级E"); break;
    		}
    
    /*	
    	案例:使用switch case分支结构模拟以下菜单效果。
    */
    
    import java.util.Scanner;
    
    public class SwitchTest {
    	
    	public static void main(String [] args) {
    		
    		//输入选择的系统
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入选择的系统(0-2):");
    		int ia = sc.nextInt();
    		
    		//使用switch选择系统
    		switch(ia) {
    			case 0: System.out.println("退出系统"); break;
    			case 1: System.out.println("学员系统"); break;
    			case 2: System.out.println("管理员系统"); break;
    		} 
    	}
    }
    

    二、循环结构

    1、循环结构的概念

    • 在Java程序中若希望重复执行一段代码时,就需要使用循环结构。
    • 在任何复杂的程序逻辑都可以通过顺序、分支、循环三种程序结构实现。

    2、for循环

    • for(初始化表达式;条件表达式;修改初始值表达式){

      ​ 循环体;

      }

    • 执行初始化表达式 => 判断条件表达式是否成立

      ​ =>成立则执行循环体 => 修改初始值表达式 =>判断条件是否成立

      ​ =>若不成立,循环结束。

    java/*
    	编程实现for循环的使用,模拟玩游戏的过程
    */
    
    public class ForTest {
    	
    	public static void main(String [] args) throws Exception {
    		
    		for(int i = 1; i <= 10; i++) {
    			System.out.println("我要继续打游戏!正在进行第 " + i + "把。
    
    
    ");
    			Thread.sleep(5000);
    		}
    		System.out.println("终于赢了十把!");
    		
    	}
    }
    
    • continue关键字:continue语句用在循环体中,用于提前结束本次循环开始下一次循环。
    /*
    	案例:for循环打印1~20之间的所有整数,若遇到5的倍数则跳过不打印
    */
    
    public class ContinueTest {
    	
    	public static void main(String[] args) {
    		
    		for(int i = 1; i <= 20; i++) {
    			//若遇到5的倍数则跳过
    			if(i % 5 == 0) {
    				continue;
    			}
    			//打印除5倍数之外的整数
    			System.out.println("i = " + i);
    		}
    	}
    }
    
    • break关键字:
      • break用于退出当前语句块,break用在循环体重用于退出循环。
      • for(;;)-这种没有循环条件的循环叫做无限循环,俗称“死循环”。
    /*
    	案例:	猜数字游戏
    			随机生成数字n(1-100), 等待用户输入猜测数据, 根据用户的输入比较输出
    			猜大了,猜小了,猜对了, 如果用户猜对了就结束游戏 。
    */
    
    import java.util.Scanner;
    import java.util.Random;
    
    public class NumTest {
    	
    	public static void main(String [] args) {
    		
    		//输入一个数据
    		Scanner sc = new Scanner(System.in);
    		Random r = new Random();
    		for(;;) {
    			System.out.println("请输入数据:");
    			int num = sc.nextInt();
    			if(0 == num) {
    				break;
    			}
    			// 随机生成一个数字n;
    			int n = r.nextInt(100)+ 1;
    			System.out.println("n = " + n);
    			//比较输出
    			if(n > num) {
    				System.out.println("猜小了!");
    			}else if(n < num) {
    			System.out.println("猜大了!");
    			}else {
    			System.out.println("猜对了!");
    			break;
    			}
    		}
    	}
    }
    

    2、双重for循环的格式

    • for(初始化表达式1;条件表达式2;修改初始值表达式3){

      ​ for(初始化表达式4;条件表达式5;修改初始化表达式6){

      ​ 循环体;

      ​ }

      }

    • 双重for循环的执行流程

      执行表达式1 => 判断表达式2是否成立

      => 若成立,则执行表达式4 =>判断表达式5是否成立

      ​ =>若成立,则执行循环体 =>执行表达式6 =>表达式5是否成立

      ​ =>若不成立,则内层循环结束 => 表达式3 =>表达式2是否成立

      =>若不成立,则外层循环结束。

    • 双重for循环的特点

      • 外层循环用于控制打印的行数,内层循环用于控制打印的列数。外层循环改一下,内层循环从头到尾跑一遍。
      • 在开发中若需要用到多行多列时,需要使用双重循环
      • 多重循环不宜套嵌太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环。
    /*
    	编程使用双重for循环打印图案
    */
    
    public class TwoForTest {
    	
    	public static void main(String [] args) {
    		
    		//打印5*5形式图案
    		for(int i = 1; i <= 5; i++) {
    			for(int j = 1; j <= 5; j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    		
    		System.out.println("------------");
    		//打印直角三角形
    		for(int i = 1; i <= 5; i++) {
    			for(int j = 1; j <= i; j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    		
    		System.out.println("------------");
    		//打印倒直角三角形
    		for(int i = 1; i <= 5; i++) {
    			for(int j = 1; j <= (6-i); j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    		
    		System.out.println("------------");
    		//打印等腰三角形
    		for(int i = 1; i <= 5; i++) {
    			for(int j = 1; j <= 5-i; j++) {
    				System.out.print(" ");
    			}
    			for(int k = 1; k <= (2*i-1); k++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    	}
    }
    
    • break关键字跳出多层循环

      • 在嵌套的循环结构中,break用于退出所在循环体

      • 如果要退出外层循环体,需要使用标号的方式。

        for(...){                outer:for(...){
        	for(...){				for(...){
        		break				 break outer;
        	}							}
        }						}
        
    /*
    	案例题目:
    		使用双重for循环打印2~100之间的所有素数。
    		当一个数只能被1和它本身整除时,这个数就叫做素数或质数。
    */
    
    public class PrimeNumberTest {
    	
    	public static void main(String [] args) {
    		
    		
    		for(int i = 2; i <= 100; i++) {
    			
    			//声明一个boolean变量表示是否为素数
    			boolean flag = true;
    			for(int j = 2; j < i; j++) {
    			
    				if(i % j == 0) {
    					flag = false;
    					break;
    				}
    			}
    			
    			if(flag) {
    				System.out.println("素数:" + i);
    			}		
    		}
    	}
    }
    

    3、while循环

    • while(条件表达式){

      ​ 循环体;

      }

    • 判断条件表达式是否成立

      => 若成立,则执行循环体 =>判断条件表达式是否成立

      => 若不成立,则循环结束

    /*
    	案例题目:
    		使用while循环计算调和数列的和并打印,即: 1/1 + 1/2 + ... + 1/n。
    */
    
    import java.util.Scanner;
    
    public class WhileTest {
    	
    	public static void main(String [] args) {
    		
    		//提示用户输入一个整数n
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入一个整数n:");
    		int n = sc.nextInt();
    		
    		//用while循环计算调和数列的和并打印
    		
    		double sum = 0;
    		int i = 1;
    		while(i <= n) {
    			sum += 1.0/i;
    			i++;
    		}
    		System.out.println("sum = " + sum);
    	}
    }
    

    4、while和for循环比较

    • while循环和for循环完全可以互换,当然推荐使用for循环。
    • while循环更适合与明确条件但不明确循环次数的场合。
    • for循环更适合明确循环次数或范围的场合。
    • while(true)等价于for(;;)都表示无线循环。
    /*
    	案例题目:
    		提示用户输入一个任意位数的正整数然后反向输出
    */
    
    import java.util.Scanner;
    
    public class WhileOppositeTest {
    	
    	public static void main(String [] args) {
    		
    		//提示用户输入一个正整数
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入一个正整数:");
    		int num = sc.nextInt();
    		
    		//使用while进行拆分打印
    		/*while(num > 0) {
    			
    			System.out.print(num % 10);
    			num /= 10;
    		}*/
    		//使用while循环拆分整数中每个数字并记录到变量中
    		int res = 0;
    		int temp = num;
    		while(temp > 0) {
    			res = res * 10 + temp % 10;
    			temp /= 10;
    		}
    		//打印结果:
    		System.out.println(num + " 逆序后的结果是:" + res);
    	}
    }
    

    5、do while循环

    • do{

      ​ 循环体;

      }while(条件表达式);

    • 执行循环体=>判断条件表达式是否成立

      ​ => 若成立,则执行循环体=>判断条件表达式是否成立

      ​ =>若不成立,则循环结束

    • do-while循环主要用于至少执行一次循环体的场合。

    /*
    	案例题目:
    		使用do while循环来模拟学习任务是否合格的检查, 如果合格则停止,
    		否则就重新完成学习任务。
    */
    
    import java.util.Scanner;
    
    public class DoWhileTest {
    	
    	public static void main(String [] args) throws Exception {
    		
    		String str = null;
    		do {
    			System.out.println("正在疯狂学习中。。。");
    			Thread.sleep(5000);//模拟五秒钟
    			System.out.println("是否合格(Y/N)");
    			//提示判断是否及格
    			Scanner sc = new Scanner(System.in);
    			System.out.println("请对学生的成绩进行评判:");
    			str = sc.next();
    		}while(!"Y".equals(str));
    		
    		System.out.println("恭喜任务完成!");
    	}
    }
    

    笔试考点:三种循环中只有do-while语句带分号

    文章内容输出来源:拉勾教育Java高薪训练营

    本文来自博客园,作者:寒露凝珠,转载请注明原文链接:https://www.cnblogs.com/china-soldier/p/14828386.html

  • 相关阅读:
    Effective C++读书笔记~4 设计与声明
    《程序员的自我修养》读书笔记 第十一章 运行库
    C++ 调试问题:对象包含与成员函数不兼容的类型限定符
    Effective C++读书笔记~6 继承与面向对象设计
    C++ lambda表达式
    备战前端
    SQL Server2008 统计某个数据库用户表和行计数方法
    回想
    C# 理解lock
    (原创)Nhibernate对象关系映射的两种方式以及一些注意
  • 原文地址:https://www.cnblogs.com/china-soldier/p/14828386.html
Copyright © 2011-2022 走看看