5.分支if-else

让程序有选择的执行,分支控制有三种

1)单分支

2)双分支

3)多分支

一.单分支结构

√基本语法

if (条件语句)

代码块;

说明:当条件表达式为true时,就会执行{}的代码。如果为false,就不执行。特别说明,如果{}中只有一条语句,则可以不用{},建议写上{}

import java.util.*;
public class DemoIf {

	public static void main(String[] args) {
		String ans;
		System.out.println("是否关羽把守华容道? 是:y,否:n");
		Scanner in= new Scanner(System.in);
		ans = in.next();
		if(ans.equals("y")) {
			System.out.println("曹操逃跑了!");
		}
		System.out.print("曹操死了!");

	}

}

二.双分支结构

if (判断条件){

执行语句1:

}

else{

执行语句2;

说明:当条件表达式成立,即执行代码块1,否则执行代码块2,如果执行代码块 只有一条语句,则{}可以省略,否则,不能省略

import java.util.Scanner;
public class DemoIfElse {

	public static void main(String[] args) {
		String ans;
		System.out.println("是否关羽把守华容道? 是:y,否:n");
		Scanner in= new Scanner(System.in);
		ans = in.next();
		if(ans.equals("y")) {
			System.out.println("曹操逃跑了!");
		}else {
		   System.out.print("曹操死了!");
		}
		System.out.println("获得新成就!");

	}


}
package mypackage;
import java.util.*;
public class Homework02 {

	public static void main(String[] args) {
		String Username,tel;
		float fee;
		float balance;
		System.out.print("请输入姓名:");
		Scanner in=new Scanner(System.in);
		Username=in.next();
		System.out.print("请输入手机电话:");
		tel=in.next();
		System.out.print("请输入您的话费余额:");
		balance=in.nextFloat();
		if(balance<5) {
			System.out.print("请输入充值金额");
			fee=in.nextFloat();
			System.out.print("您好,用户"+Username+","+"您的手机"+tel+"充值后的余额为:"+(fee+balance));
		}else {
			System.out.print("暂无需充值");
		}

		
		
		

	}

}

三.多分支结构

说明:1.当条件表达式1成立时,即执行代码块1

2.如果表达式1不成立,才去判断表达式2是否成立

3.如果表达式2成立,就执行代码块2

4.以此类推,如果所有的表达式都不成立

5.则执行else的代码块,注意,只能有一个执行入口

package chapter02;

import java.util.*;

public class Homework07 {

	public static void main(String[] args) {
		//超市促销程序
		Scanner in=new Scanner(System.in);
		
		System.out.print("花费金额为:");
		double money=in.nextDouble();
			if(money>=100) {
				System.out.printf(String.format("打折后商品价格为:%.2f",money*0.8 ));
			}else if(money<100&&money>=50) {
				System.out.printf(String.format("打折后商品价格为:%.2f",money*0.9 ));
			}else if(money<50) {
				System.out.printf(String.format("打折后商品价格为:%.2f",money ));}
		    else {
			System.out.printf("输入金额错误,请重新输入。");
		}
		
		
		

	}

}
package chapter02;
import java.util.*;
public class DemoIfElseIfElse {

	public static void main(String[] args) {
		String dongFeng,guanYu;
		Scanner in =new Scanner(System.in);
		System.out.print("是否借来了东风?是输入y,不是输入n:");
		dongFeng=in.next();
		System.out.print("是不是关羽把守华容道?是输入y,不是输入n:");
		guanYu=in.next();
		if (dongFeng.equals("n")) {
			System.out.print("曹操获胜");
		}else if (guanYu.equals("y")) {
			System.out.println("曹操逃跑了!");
		}else {
			System.out.println("曹操死了!");
		}
		

	}

}

特别说明:(1)多分支 可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有(2)如果else,如果所有的条件表达式都不成立,则默认执行else代码块


四.嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。规范:不要超过3层

·基本语法

if(){

if(){

//if-else

}else{

//if-else

}

}

package chap5;
import java.util.*;
public class NestExercise {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请选择一个月份(其中4-10为旺季,其余月份为淡季):");
		int month=in.nextInt();
		System.out.println("请输入您的年龄:");
		int age=in.nextInt();
		if(month>=4 && month<=10) {
			if(age>=18 && age<=60) {
				System.out.println("您的票价为:60");
			}
			if(age<18) {
				System.out.println("您的票价为30");
			}
			if(age>60) {
				System.out.println("您的票价为20");
			}
		}
		if(month<4 && month>10) {
			if(age>=18) {
				System.out.println("您的票价为40");
			}
			if(age<20) {
				System.out.println("您的票价为20");
			}
		}

	}

}

四.switch结构

·基本语法

switch(表达式){

case 常量1;

语句块1;

break;

case 常量2;

语句块2;

break;

....

case 常量n;

语句块n;

break;

default:

default语句块;

break;}

package chapter02;
import java.util.*;
public class DemoSwitch {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String goodsName;
		float price;
		System.out.print("输入商品名(手机、电池、巧克力、钢笔、笔记本):");
		Scanner in = new Scanner(System.in);
		goodsName = in.next();
		switch(goodsName) {
		 
		    case "手机":price = 3500f;break;
		    case "电池":price=11.5f;break;
		    case "巧克力":price=22.35f;break;
		    case "钢笔":price=36.78f;break;
		    case "笔记本":price=5f;break;
		    default:price = -1f;break;
		    }
		    if (price < 0 ) {
		    	System.out.println("没有查到该商品");
		    }else {
		    	System.out.println(goodsName+"的价格为"+price+"元");
		    }
		}
		

	

}

1.switch关键字,表示switch分支

2.表达式 对应一个值

3.case 常量1:当表达式的值等于常量1,就执行 语句块1

4.break:表示退出switch

5.如果和case常量1 匹配,就执行语句块1,如果没有匹配,就继续匹配匹配 case常量2

6.如果一个都没有匹配上,执行default

流程图

细节:

1.表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互转化比较的类型,比如输入的是字符,而常量是int

2.switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)

3.case子句中的值必须是常量,而不能是变量

4.default子句是可选的,当没有匹配的case时,执行default

5.break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行switch结尾,除非遇到break;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值