选择结构

1.程序执行顺序:顺序结构,选择结构,循环结构。

2.两个基本数据类型(int,double,char,boolean)的变量进行比较,用关系运算符;
引用数据类型(String)的变量进行比较,用字符串1.equals(字符串2);

3.从键盘上接收数据
第一步:在类上面导包: import java.util.Scanner;
第二步:获得具有从键盘上接收数据的能力:Scanner input=new Scanner(System.in);
第三步:从键盘上接收数据:
int类型: input.nextInt();
long类型: input.nextLong();
double类型: input.nextDouble();
String类型: input.next();
注意:不能从键盘上直接收char类型的数据。
eg://导包
import java.util.Scanner;
/**
* 从键盘上接收用户的输入
* @auth sx
* @version 1.0 2019-06-18
/
public class InputTest{
/
*
*程序的入口方法
*/

    public static void main(String[] args){
    		System.out.println("请输入内容");
    		//获得具有从键盘上接收数据的能力
    		Scanner input=new Scanner(System.in);
    		//从键盘上接收int数据,存到num1变量中
    		//int num1=input.nextInt();
    		//从键盘上接收double数据
    		//double num2=input.nextDouble();
    		//从键盘上接收String数据
    		String s1=input.next();
    		
    System.out.println("接收的值为:"+s1);
    	}
    }

4.if选择结构:解决一种情况的问题
4.1:if选择结构的语法:if(条件){
语句块;
}

4.2: 执行流程:如果if结构中的小括号中条件成立,就执行if后面大括号中语句块;
		如果if结构中的小括号中条件不成立,就不执行if结构中的语句,执行之后的语句。
	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	System.out.println("你上课是否犯困?(y/其他):");
	//从键盘上接收数据,并存入变量中
	String answer=input.next();
	if(answer.equals("y")){
		System.out.println("请站起来听课");
	}
}

5.if-else选择结构:解决有两种情况,并且无论如何都会执行其中一种情况的问题。
5.1:语法:if(条件){
语句块1;
}else{
语句块2;
}

5.2:执行流程:如果if小括号中条件成立,就执行语句块1,否则就执行语句块2.
	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	System.out.println("这周大家的考勤是否为满分?(y/n)");
	String answer=input.next();
	if(answer.equals("y")){
		System.out.println("老师星期六请大家吃饭");
	}else{
		System.out.println("大家星期六请老师吃饭");
	}
}

6.多重if选择:解决有多种情况(多分支)问题。
6.1:语法:if(条件1){
代码块1;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}

6.2:执行流程:先判断条件1,如果条件1为true,就执行代码块1,再执行这个结构后面的句; 如果条件1为false,再判断条件2,如果条件2为true,就执行代码块2,再执行这个结构后句;如果条件2为false,再判断条件3,如果条件3为true,就执行代码块3,再执行这个结构后面的语句,如果条件3为false,就执行代码块4,再执行这个结构后面的语句。
6.3:执行特点:
6.3.1:多重if选择结构中,if有且仅有一个,else if有一到多个,else有0个到一个。
6.3.2:多重if选择结构中,最多执行一种情况或叫一个分支,最少一个分支都不执行。
6.3.3:用多重if选择结构解决多种情况范围判断问题,省略潜台词的条件,条件之间不可以互换位置;如果没有省略条件,条件之间可以互换位置;
6.3.4:用多重if选择结构解决多种情况等值判断问题,条件之间可以互换位置;

	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	System.out.println("请输入考试的成绩:");
	//从键盘上接收数据关存入变量中
	double score=input.nextDouble();
	//判断情况符合哪种情况
	if(score>=90){
		System.out.println("优秀");
	}else if(score>=80){
		System.out.println("良好");
	}else if(score>=60){
		System.out.println("及格");
	}else{
		System.out.println("不及格");
	}
}

7.嵌套选择结构:将一个选择结构完整写在另一个选择结构的语句块中。
任意的选择结构都可以相互嵌套,嵌套要正确。
嵌套的层次可以多层,Java中用得比较多的是2,3层层次。

	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	System.out.println("请输入考试的成绩:");
	//从键盘上接收数据关存入变量中
	double score=input.nextDouble();
	//判断情况符合哪种情况
	if(score>=0&&score<=100){
		if(score>=90){
			System.out.println("优秀");
		}else if(score>=80){
			System.out.println("良好");
		}else if(score>=60){
			System.out.println("及格");
		}else{
			System.out.println("不及格");
		}
	}else{
		System.out.println("你输入的成绩有误!");
	}
}

题目:从键盘上接收你百米跑步的时间,如果时间小于9秒就进行决赛,如果时间大于9秒,就谢谢参与;如果进行决赛,就从键盘上接收性别,如果是男,就进入男子组的决赛,如果是是女,就进入女子组决赛

8.switch结构:解决有多种情况的等值判断问题。

8.1:语法:switch(表达式){
			case 常量1:
				语句块1;
				break;
			case 常量2:
				语句块2;
				break;
			......
			default:
				默认语句块;
				break;
		  }

8.2:执行流程:先判断表达式的值是否等于常量1,如果等于常量1,就执行语句块1,遇到break就跳出switch结构,执行之后的代码;如果表达式的值不等于常量1,就判断表达式的值是否等于常量2,如果等于常量2,就执行语句块2,遇到 break就跳出switch结构;如果表达式不等于case后面的任何一个常量值, 就执行default中语句块,遇到break或结尾的}就跳出switch结构。
8.3:执行特点:
8.3.1:switch结构中,cases可以有1到多个,default块可以有0个到1个。
8.3.2:switch结构小括号中的表达式的值的类型是byte,short,int,char
在jdk5.0后支持枚举类型。
在jdk7.0后支持String。
8.3.3:switch结构每个case只有执行到break和结尾的}才能跳出switch结构, 一般情况 下,每个case块后面的break不能省略。如果省略了break,switch结构判断满足 一个分支并执行后,不会进行第二次判断,会继续往下面执行,直到遇到breaka或结尾}就跳出switch。
8.3.4:在同一个switch结构中,case后面的常量值不可以相同。
8.3.5:在同一个switch结构中,case块可以互换位置。
8.3.6:在同一个switch结构中,default语句块可以写在任意位置。
8.3.7:switch结构中,最少执行0种情况,最多执行多种情况(省略break);
8.3.8:能用switch结构解决的问题都可以用多重if结构解决,能用多重if结构 解决的问题不一定能用switch结构解决。

	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	System.out.println("请输入今天是星期几(1-7):");
	int today=input.nextInt();
	
	switch(today){
		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:
			System.out.println("输入有误");
			break;
	}
}

9.多重if选择结构 VS switch
9.1:相同点:
9.1.1:都可以解决多种情况等值判断问题,一般首选switch。
9.1.2:最少一种情况都不执行。
9.2:不同点:
9.2.1:switch结构只能解决多种情况的等值判断问题;多重if选择结构除了可以解决多种 情况的等值判断问题,还可以解决多种情况范围判断问题。
9.2.2:switch表达式的类型有限制;多重if选择结构条件的结果是boolean.
9.2.3:switch结构最多可以执行多个分支(情况);多重if选择结构最多执行一个分支。
9.2.4:switch结构中case块可以互换位置;多重if选择结构中条件不一定可以互换位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值