java中的控制流语句

时间:2022-06-14 00:58:39

控制流语句的类型有判断语句和循环语句

判断语句有if-else语句  switch-case语句

循环语句有while循环   do-while循环  for 循环

•switch-case 语句可用于替换 if-elseif 语句
•在表达式可以得出多个值的情况下,使用此语句
•使用 switch-case语句会带来更好的效果
语法:

 switch(表达式){

        case 1:

            操作1 的语句;

            //break;

        case 2:

            操作2 的语句;

            //break;

            ….

         case n :

            操作n 的语句;

            //break;

        default:

            默认语句;

    }

()里的表达式,在

Jdk1.7之前,()中的结果只能是<=int的数据

Jdk1.7及之后,()中的结果也可以是String

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量。

下面用switch-case语句来判断某年某月的月份的天数

public class Year{
	public static void main(String [] args){
	//声明一个整数变量month,存储一个月份的值初始化为2017
    //再声明一个变量year,存储年份的值初始化为10
    int year=2017;
	int month=12;
	//以下月份不含有二月份,可以不考虑闰年
	//1 3 5 7 8 10 月份为大月,有31天,
	//4 6 9 11 月份为小月,有30天
	if(month>=1&&month<=12)  {	
	int days=31;
	switch(month){
		
		
		case 4:
		case 6:
		case 9:
		case 11:
		days=30;
        break;
		case 2:
		days=28;
		if((year%4==0&&year%100!=0)||(year%400==0))
			days=29;
	    break;
	}  

	System.out.println(month+"月有"+days+"天");
	}else 
		System.out.println("请输入一个有效的月份");
	}
	
	
	
}

这里说一下break:当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。如果没有break语句,就会继续执行剩下的语句,导致输出错误。我们可以通过如下的代码来看一下

switch(month){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		//控制台输出
		System.out.println(month +"月有31天");

		break;		//break语句必须有,否则会继续执行下列语句
		case 4:
		case 6:
		case 9:
		case 11:
		System.out.println(month +"月有30天");
		break;
		case 2:
		System.out.println(month +"月有29天");
	}

若没有break;如果这个月是七月,那么输出“7月有31天”紧接着会输出“7月有30天”“7月有29天”很明显是错误的

使用switch-case来解决这道问题,两种方法来对比一下

/*
2、用一个变量来表示中奖的等级,比如1,2,3,4
如果是1等奖,打印出买房、买车、买电脑、买手机
如果是2等奖,打印买车、买电脑、买手机
如果是3等奖,打印买电脑、买手机
如果是4等奖,打印买手机
其他,打印可惜未中奖,下次再努力。

public class Price{
	public static void main(String [] args){
		int price=2;
		
			switch(price){
	
			case 1:
				System.out.println(price+": 买房,买车,买电脑,买手机");
				break;
				case 2:
				System.out.println(price+":  买车,买电脑,买手机");
				break;
				case 3:
				System.out.println(price+":  买电脑、买手机");
				break;
				case 4:
				System.out.println(price+":  买手机");
				break;
				
			default :
			    System.out.println("可惜未中奖,下次再努力。");
		
		
	}
}
}


public  class  Price{
	
	public static void main(String[] args){
		int grade=1;
		switch(grade){
			
				//任何一个case等值比较相同后,通道就打通,
				//后续代码会依次执行,直到碰到一个break,才从Switch中退出
			case 1:
				System.out.print("买房 ");
			case 2:
				System.out.print("买车 ");
			case 3:
				System.out.print("买电脑 ");
			case 4:
				System.out.println("买手机 ");
				break;
			default:
				System.out.println("可惜未中奖,下次再努力。");
				break;
		}
	}
	
}


这题中的输出条件具有一定的关系,利用了关系来处理输出条件