Java流程控制、三大结构

Java三种流程控制语句简介

        从结构化程序设计角度出发,一般使用顺序结构、分支结构、循环结构进行程序设计和流程控制。详细的使用方法如下。

顺序结构

        顺序结构是程序的基本结构代码会由上而下的进行执行,中途不会出现判断或跳转。
        案例:

public class ProcessControl {

	public static void main(String[] args) {
		System.out.println("早上八点起床吃了西红柿鸡蛋面");
		System.out.println("中午在公司进行了项目需求分析会议修缮的一些程序的BUG、吃了一份可乐鸡饭没有午休");
		System.out.println("晚上加班到很晚、也许这就是生活吧");
		System.out.println("回家想想自己的工资,看了看房价。睡意全无,又开始了mysql的优化学习");	
	}
}

分支结构

        开篇之前先来一个不是笑话的笑话。

      【故事】老婆给当程序员的老公打电话:下班顺路买十个包子,如果看到卖西瓜的,买一个。当晚老公手捧一个包子进了家门。老婆怒道:你怎么只买一个包子?!老公甚恐,喃喃道:因为我真看到卖西瓜的了。

        分支结构是程序设计中即为常用的。主要用于判断和选择。在Java中使用if 条件语句、switch选择语句进行流程控制。

if 条件语句

if的使用

介绍:可以对程序需要执行的代码进行条件限制。满足条件则执行,不满足则不执行。
语法

if(条件表达式){
	//满足条件的执行语句
}

花括号中的内容,称为代码块,一个代码块会被当成一个整体来执行。
示例:

	//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!
		int age;

		//大于18
		age=19;
		
		if(age>=18) {
			System.out.println("快来愉快的玩耍吧!");	
		}
		//小于18
		 age = 17; 
		if(age<=18) {
			System.out.println("回家学习!");	
		}

if else的使用

        满足if里面的内容则执行if花括号内的语句。如果不满足则执行else花括号后面的内容。

语法:

if(条件表达式){
	//满足条件的执行语句
}else{
	//不满足条件执行
}

示例:

		//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!
		int age=23;
		int age2=16;
		if(age>=18) {
			System.out.println("快来愉快的玩耍吧!");
		}else {
			System.out.println("回家学习吧!");
		}
		
		if(age2>=18) {
			System.out.println("快来愉快的玩耍吧!");
		}else {
			System.out.println("回家学习吧!");
		}

if else if的使用

        满足if里面的内容则执行if花括号内的语句。如果不满足继续判断else if内的条件满足则执行,不满足则继续向下判断,都不满足执行else花括号内的代码。
语法:

if(条件表达式){
	//满足条件1的 执行语句
}else if{
	//满足条件2的 执行语句
}else{
    //不满足以上条件的执行
}

示例:
需求:成绩判断器 90-100优秀 80-89 良好 70-79中等 60-69 及格 60以下 不及格

  //成绩判断器   90-100优秀 80-89 良好 70-79中等 60-69 及格  60以下 不及格
	if(score>=90) {
			System.out.println("优秀");			
		}else if(score>=80){
			System.out.println("良好");
		}else if(score>=70){
			System.out.println("中等");
		}else if (score>=60) {
			System.err.println("及格");
		}else {
			System.out.println("不及格");
		}

if条件语句的嵌套

if语句可以进行嵌套使用 即if语句内可与包含if语句
需求:百米赛跑案例 当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组
示例:

		//百米赛跑案例   当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组
		
		double grade = 9.0;
		int sex=0; //0代表男 1代表女
		
		if (grade < 10) {
			System.out.println("进入决赛");
			
			if(sex==0) {
				System.out.println("进入男子组");
			}else if(sex ==1 ) {
				System.out.println("进入女子组");
			}else {
				System.out.println("数据有误");
			}
			
		}

判断闰年

1.能被4整除,但不能被100整除,就是闰年;
2.能被400整除,也是闰年
方案一:

		int year =2000;
		
		if(year % 4 == 0) {
				if(year%100 != 0) {
					System.out.println(year+"是闰年");
				}else if(year % 400 ==0 ) {
					System.out.println(year+"是闰年");
				}else {
						System.out.println(year+"不是闰年");
					}
		}else if(year % 400 ==0 ) {
				System.out.println(year+"是闰年");
		}else {
				System.out.println(year+"不是闰年");
			}

方案二:

			int year =2000;
			
			if( (year%4==0 && year%100 !=0) || year%400==0 ) {
		       System.out.println(year+"是闰年");
			}else {
				System.out.println(year+"不是闰年");
			}

switch选择语句

语法:

	switch (key) {
		case value:
		//执行语句
		break;
		
		default:
		//执行语句
			break;
	}

        在上面的格式中,switch语句将key的值与每个case中的目标值进行匹配,如果相等,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字的作用是跳出switch语句。

注意事项:
        一、key代表的数据类型 只能是 int short byte char String 枚举
        二、switch 只能用于做等值判断
        三、default 顺序问题 他可以放到最上面的位置 注意放置位置不同会影响我们代码输出
        四、default 可以被省略
        五、 if 一般用于一定范围内的条件判断 switch 能完成的案例 if都能完成 但是if能完成案例 switch不一定完成 常用分支结构if if

switch (需求值){

    case 目标值1:
        执行语句1
        break;
        
    case 目标值2:
        执行语句2
        break;

    ......

    case 目标值n:
        执行语句n
        break;
        
    default:
        执行语句n+1
        break;
}

示例:
需求:超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒

		// switch选择语句
		
		//超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒 
	
		double money = 208.6;//购物费用
		
		if(money>=199) {
			int grade = 4;//奖励等级 
			switch (grade){
				case 1:
					System.out.println("恭喜你获得空调");
					break;
				case 2:
					System.out.println("恭喜你获得电视");
					break;
				case 3:
					System.out.println("恭喜你获得电饭煲");
					break;
				case 4:
					System.out.println("恭喜你获得精品茶具");
					break;
				case 5:
					System.out.println("恭喜你获得抽纸");
					break;
				default:
					System.out.println("很遗憾您未中奖");
					break;
			}
			System.out.println("欢迎再次回顾!");
		}else {
			System.out.println("很抱歉,您购物未满199元不能参与此活动");
		}

循环结构

为什么使用循环?

        假设给予一个需求,输出一个HelloWorld我们可以很轻松的将其输出,如果我们需要输出十个HelloWorld、一万个、十万个乃至更多的HelloWorld时要如何完成呢?
        此时我们就需要使用循环来解决问题。

什么是循环?

        循环用于处理程序中具有规律性的重复操作。
        在Java中有三种循环语句
        ▶while
        ▶do-while
        ▶for

while循环

语法:

while(条件表达式){ 
	// 满足条件,则执行
    // 迭代语句(退出机制)
     }

        当条件表达式返回 true 的时候,则可以执行代码块中的内容,在循环体中要有迭代语句,才能让条件中的变量受到控制。
        执行顺序:先判断,再执行

示例:打印100次while

	int i=0;//定义初始变量
		while(i<100) {		
			System.out.println("第"+(i+1)+"次"+"HelloWorld");
			i++;//自加1 操作
		}

注意事项:
        ◆while循环 条件满足后 执行{}里面语句
        ◆书写过程中第一次条件必须满足 如果不满足 循环直接不会执行
        ◆声明初始变量 在{}中 变量需要更新 要不然会发生死循环情况

do…while循环

语法:

do{
	//循环操作
}while(循环条件);

        先执行一次do内的循环操作。然后后条件表达式返回 true 的时候,则可以执行do代码块中的内容。
        执行顺序:先执行,后判断

示例:连续录入学生学号,输入“0”则系统退出

	  //输入学生的学号  输入0时退出
		Scanner scanner =new Scanner(System.in);
		int id=0;
		do {
			System.out.println("请输入学号:");
			id = scanner.nextInt();
			System.out.println(id);
		}while(id!=0);

注意事项:
        ◆do while 循环特点 先执行 后循环操作
        ◆do while 无论while中条件是否满足 循环操作至少执行一次

for循环

在这里插入图片描述
语法:

for(初始化参数;条件判断;更新循环变量){
    //执行语句
}

详解:
for(表达式1;表达式2;表达式3){循环体结构}
        ▶表达式1:一般作为循环变量赋初始值;
        ▶表达式2:循环继续的条件,即能判断出真假的条件,一般为关系表达式;
        ▶表达式3:用于循环变量的的改变,可加,可减。。。

示例:
//打印100次HelloWorld

		for(int i=0;i<100;i++) {
			System.out.println("第"+(i+1)+"次HelloWorld!");
		}

//循环录入8们课程的成绩 并求其平均分

		Scanner scanner = new Scanner(System.in);
		double score=0;
		double sum = 0;
		for(int i=0;i<8;i++) {
			System.out.println("请输入第"+(i+1)+"门课程的成绩:");
			score = scanner.nextDouble();
			sum = sum+score;
		}
		System.out.println("课程平均成绩为:"+sum/8);

注意事项:
        ▶for循环的初始化必须含有;;
        ▶无条件判断会造成死循环
        ▶循环条件一次不满足就会跳出循环 不会继续下一次循环

break 和 continue

break(中断循环 跳出循环)

语法:

while(){
   if(){
   		break;//跳出循环
   }
}

        break通常在循环中与条件语句一起使用

示例:
随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”

		//随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”
		Scanner scanner = new Scanner(System.in); 
		int num = 0;
		int i;
		for ( i = 1; i <=10; i++) {
			System.out.println("请输入第"+i+"个数:");
			num = scanner.nextInt();
			if(num == 0) {
				System.out.println("输入0跳出循环");
				break;
			}
			
		}
		System.out.println("循环结束,你输入了"+i+"次");

continue(跳过一次循环 继续执行下一次循环)

语法:

while(){
   if(){
   		continue;//跳出本次循环
   }
}

        continue :只能用在循环里

示例:
求取1-100以内不包含10的和

		//求取1-100以内不包含10的和
		int sum = 0;	
		for(int i=1;i<=100;i++) {
			if(i==10) {
				continue; //跳出本次循环 本次循环内continue以下的语句不再
			}
			sum=sum+i;
		}
		System.out.println(sum);

循环嵌套

循环内可以继续嵌套循环
示例:

//使用0打印出一个5行5列的矩形
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("0");				
			}
			System.out.println("0");	
		}

        往往嵌套三次以下 超过三次会导致代码可读性变差!

循环示例

示例一 、 打印1-100之间的偶数和它们的和

package com.qingsu.basis;

public class Loop {
	
	public static void main(String[] args) {
		//打印1-100之间的偶数 和他们的和
		
		int i = 1;
		int sum = 0;
		while(i<101) {
			if(i%2==0) {
				System.out.println(i);
				sum = sum+i;
			}		
			i++;
		}
		System.out.println("1-100内的偶数和为"+sum);
		
	}

}

示例二、 打印1-100以内的质数(基础版)
while实现

package com.qingsu.basis;

import java.util.Scanner;

public class Loop {
	
	public static void main(String[] args) {		
		//打印输出1-100内的质数
		//质数(素数)仅可以被1和自身整除的数为质数
		
		int num = 2;
		 boolean flag = true;//用于保存是否为素数
		
		while (num<=100) {//外层循环 用于实现从2-100 1不是质数
			int num2 = 2;
			 while(num>num2) {//内层循环用于判断是不是质数
	                if(num%num2 == 0) { 如果能被整除则表明不是质数 不能被整除则表明是质数
	                    flag = false;
	                	break;
	                }
	                num2++;
			 }
			 if(flag) {
				 System.out.println(num);
			 }
			 num++;
			 flag=true;
		}	 			
	}
}

for实现

package com.qingsu.basis;

import java.util.Scanner;

public class Loop {
	
	public static void main(String[] args) {		
		//打印输出1-100内的质数
		//质数(素数)仅可以被1和自身整除的数为质数
		boolean flag = true;//用于保存是否为素数
		for(int i=2;i<=100;i++) {//外层循环 用于实现从2-100 1不是质数	
			for(int j=2;j<i;j++) {//内层循环用于判断是不是质数
				if(i%j==0) {
					flag  = false;
					break;					
				}
			}
			if(flag) {
				System.out.println(i);				
			}
			flag = true;
		}	
	 			
	}
}

示例三、录入班级人数和学员成绩,计算班级学员的平均成绩

package com.qingsu.basis;

import java.util.Scanner;

public class Loop {
	
	public static void main(String[] args) {		
		//录入班级人数和学员成绩,计算班级学员的平均成绩
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入班级人数:");
		int num = scanner.nextInt(); 
		int i = 0;
		double sum = 0;
		
		while(num>i) {
			System.out.println("请输入第"+(i+1)+"位同学的成绩:");
			double score = scanner.nextDouble();
			i++;
			sum = sum+score;					
		}
			System.out.println("平均成绩为:"+sum/num);
	}
	
}

示例四、年增月增问题
        某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?

package com.qingsu.basis;

import java.util.Scanner;

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

	//某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?
		int year = 2016;
		double num = 1300000;
		
		while (5000000>=num) {
			num = num*1.18;
			year++;		
		}
		System.out.println("第"+year+"年后旅游人数将达到500万人,人数为"+(int)num);	
	
	}
}

示例五、打印九九乘法表

package com.qingsu.basis;

import java.util.Scanner;

public class Loop {
	
	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+"="+i*j+"\t");
			}
			System.out.println();
		}		
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值