03流程控制之分支结构

流程控制之分支结构

Scanner类(扫描仪)

作用:用于接收键盘输入的数据  数字 字符串  字符 等数据
java.util包中
步骤:
	1.获取工具
	2.用工具
功能: 
								函数
	接收整数类型int              nextInt()
	接收小数类型double           nextDouble()
	接收字符类型                 next().charAt(0)
	接收字符串类型               next()
案例:
public class Demo{
	public static void main(String[] args){
		//1.获取工具
		java.util.Scanner  gj = new java.util.Scanner(System.in);

		//2.用工具
			//提示语句
		System.out.println("请输入您的数据:");
		
		//int a = gj.nextInt();
		//double a = gj.nextDouble();
		//String a = gj.next();
		char a = gj.next().charAt(0);
		System.out.println("您输入的数据是:"+a);
	}
}

导包

语法:
import 包名1.包名2.包名n.类名;
位置:
定义类之前  package语句之后
注意:
	1.import语句只能在 package语句之后  定义类之前!!!!
	2.import 语句可以有多个 
	3.当定义一个类的时候 默认就会导入java.lang包
package cn.wzx;
//导包
import java.util.Scanner;

public class Demo{
	public static void main(String[] args){
		//1.获取工具
		Scanner  gj = new Scanner(System.in);

		//2.用工具
			//提示语句
		System.out.println("请输入您的数据:");
		//int a = gj.nextInt();
		//double a = gj.nextDouble();
		//String a = gj.next();
		char a = gj.next().charAt(0);
		System.out.println("您输入的数据是:"+a);
	}
}

案例:可以在导包时导入包下所有的类
package cn.baizhi.day03;
//导包
//import java.util.Scanner;
import java.util.*;//导入util包下的所有的类
public class Demo{
	public static void main(String[] args){
		//1.获取工具
		Scanner  gj = new Scanner(System.in);

		//2.用工具
			//提示语句
		System.out.println("请输入您的数据:");
		//int a = gj.nextInt();
		//double a = gj.nextDouble();
		//String a = gj.next();
		char a = gj.next().charAt(0);
		System.out.println("您输入的数据是:"+a);
	}
}

顺序结构

自顶向下逐行执行

分支结构

if分支结构
第一种:if单分支结构
语法:
if(布尔表达式){
	语句1;
	。。。。
}
执行流程:
            |--true --->执行语句1。。。
布尔表达式-->
			|--false --->直接跳过if结构


第二种: if ... else
语法:
if(布尔表达式){
	语句1;
}else{
	语句2}

执行流程:
			|--true ---->   语句1
布尔表达式-->
    		|--false---->   语句2

练习:
键盘输入一个整数 判断这个数是奇数还是偶数       
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int i = s.nextInt();
		//原理   i%2 == 0 偶数
		if (i%2==0) {
			System.out.println("是偶数");
		} else{
			System.out.println("是奇数");	
		}	
	}
}


if...else  和 三元运算符的转换
三元运算符有局限性 
案例:
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){

		int a = 4;
		int b = 5;
		
		String s = a>b?"a>b":"a<b";

		if (a>b) {
			System.out.println("a>b");
			
		} else{
			System.out.println("a<b");	
		}	
	}
}

第三种:if...else if...else if...  .... else
语法:
if(布尔表达式1){
	语句1;
}else if(布尔表达式2){
	语句2}else if(布尔表达式3){
	语句3}
。。。。
else if(布尔表达式n){
	语句n;
}else{
	语句n+1;
}

练习:

0--59  不及格   
60 --- 69 及格  61  62   
70----89 良好
90---100 优秀

package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入您的成绩:");

		int fenShu = s.nextInt();

		if (fenShu>=0&&fenShu<60) {
			System.out.print("不及格");
		}else if (fenShu<70) {
			System.out.println("及格");
			
		}else if (fenShu<90) {
			System.out.println("良好");
			
		} else{
			System.out.println("优秀");
		}
	}
}

if语句的嵌套使用:
语法:
if(布尔表达式1)if(布尔表达式2){
		语句1;
	}
	if(布尔表达式3){
	
	}
}
案例:
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入您的成绩(成绩在0到100之间):");

		double fenShu = s.nextDouble();

		//对数据的合法性进行判断
		if(fenShu>=0&&fenShu<=100){
			if (fenShu>=0&&fenShu<60) {
				System.out.print("不及格");
			}else if (fenShu<70) {
				System.out.println("及格");
			
			}else if (fenShu<90) {
				System.out.println("良好");
			
			} else{
				System.out.println("优秀");
			
			}
		}else{
			System.out.println("你脑子进水了 滚蛋");
		}
		
	}
}
switch …case结构
语法:
switch(表达式){
	case1:语句1case2:语句2;
	。。。
	case 值n:语句n;

}
执行流程:
用表达式的值和case后的每个值进行匹配 如果表达式的值和case后的值相等那么就执行case后对应的语句
要求:表达式的值的类型 必须是 byte  short int char  jdk7之后支持String 枚举 其中的一种 

case穿透问题:
解决用break语句:
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个1-7的整数:");
		
		int i = s.nextInt();

		switch(i){
			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;
			case 6: System.out.println("星期六");break;
			case 7: System.out.println("星期日");break;
		}
	}
}
==================================================================
default语句:
注意:
	1.当表达式的值和所有case的值都不匹配 就会执行default语句
	2.default语句的位置和执行顺序无关 无论放在第几行都是最后执行
	3.default语句放在其他行时必须加break语句 否则会出现case穿透
	4.default语句放在最后一行可以省略break
package cn.baizhi.day03;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个1-7的整数:");
		
		int i = s.nextInt();

		switch(i){
			default:System.out.println("你个傻叉");
			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;
			case 6: System.out.println("星期六");break;
			case 7: System.out.println("星期日");break;
			
		}
		
		
	}
}
==============================================================
注意:case后的值不可以重复 如果重复直接报错
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入一个1-7的整数:");
		
		int i = s.nextInt();

		switch(i){
			case 1: System.out.println("星期一");break;
			case 2: System.out.println("星期二");break;
			case 2: System.out.println("星期三");break;//报错
			case 4: System.out.println("星期四");break;
			case 5: System.out.println("星期五");break;
			case 6: System.out.println("星期六");break;
			case 7: System.out.println("星期日");break;
			default:System.out.println("你个傻叉");break;
		}
		
		
	}
}
===============================================================
case穿透问题:

案例:用switch case结构 改写  成绩的案例
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入你的分数:");

		int score = s.nextInt();

		if (score>=0&&score<=100) {
			switch(score/10){
				case 6: System.out.println("及格");break;
				case 7: 
				case 8: System.out.println("良好");break;
				case 9: 
				case 10: System.out.println("优秀");break;
				default: System.out.println("不及格");
			}
		} else {
			System.out.println("你个傻叉");
		}
	}
}

局部变量

概念:定义在函数内部的变量叫做局部变量
作用域:能够访问到变量的范围
特点:
1.变量没有赋值不能使用
2.在重合作用域内不能定义同名局部变量
3.从定义位置开始到所在代码块结束,是局部变量的作用域

代码块:
{}

案例:不能在重合作用域范围定义重名的局部变量
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		int a =30;
		//第一个代码块
		{ 
			int a = 20;
			System.out.println(a);
			
		}
		//第二个代码块
		{
			
		}
		

	}
}
案例:在不同的代码块 不能相互访问局部变量
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		//第一个代码块
		{ 
			int a = 20;
			System.out.println(a);
			
		}
		//第二个代码块
		{
			System.out.println(a);
			
		}
		

	}
}
案例:在没有重合作用域范围 可以定义同名的局部变量
package cn.wzx;
import java.util.*;
public class Demo{
	public static void main(String[] args){
		//第一个代码块
		{ 
			int a = 20;
			System.out.println(a);
			
		}
		//第二个代码块
		{
			int a = 30;
			System.out.println(a);
			
		}
	}
}

注意
if结构后的{}省略时 if结构只对其后的第一条语句起作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值