欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java之if语句、if-else语句、if-else if-else语句、switch开关语句

程序员文章站 2024-01-06 08:05:34
...

一、if语句是单条件单分支语句,根据一个条件来控制程序执行的流程;

1、if语句的语法格式:

if(表达式){
  若干语句
}

2、if语句中表达式的值必须是boolean类型的,当值为 true 时,则执行 {} 中的 若干语句 ;当值为 false 时则结束当前 if 语句;

以下代码进行演示: 表达式 test>1 为真,所以执行 {} 中的三条语句,最后结果输出 100 ;

                int test = 10 ;
		if(test>1){                  //if语句判断
			int tests = 100 ; 
			test = tests ;
			System.out.println(test);    //输出test为100
		}

3、if语句中,当 {} 中的语句只有一条时,可以省略 {} , 但是为了增强代码的可读性,建议大家不要省略;如下演示:

        int test = 10 , tests = 100 ;                
        if(test>1){
	   System.out.println(test);  // test>1为真,输出test
	}
        if(tests<1)
           tests = test ;
	System.out.println(tests); // tests<1为假,则不进行tests = test ;语句,输出tests为100

二、if-else语句是单条件双分支语句,与if语句一样根据一个条件来控制程序执行的流程;

1、if-else语句的语法格式:

if(表达式){
  若干语句
}else{
  若干语句
}

2、if-else语句中表达式的值必须是boolean类型的,当值为 true 时,则执行紧跟 () 后面的 {} 中的若干语句 ;当值为 false 时则执行紧跟 关键字else 后面的 {} 中的若干语句 ;

以下代码进行演示: 表达式 test > 1 为真,所以执行紧跟 () 后面的 {} 中的语句,最后结果输出 10 ;

                int test1 = 2;
		if (test1 > 1) {    // if语句判断
			int test2 = 10;
			test1 = test2;
			System.out.println(test1); // if表达式的值为true,则输出test1为10
		}else{
			int test3 = 100;
			test1 = test3;
			System.out.println(test1); // if表达式的值为false,则输出test1为100
		} 

3、if-else语句中,当 {} 中的语句只有一条时,可以省略 {} , 但是为了增强代码的可读性,建议大家不要省略;如下演示:

        int test1 = 2;
	if (test1 > 1)     // if语句判断
	    test1 = 10;    // if表达式的值为true,则输出test1为10
	else
	    test1 = 100;   // if表达式的值为false,则输出test1为100
	System.out.println(test1); // 此输出语句,不属于上面的 if-else 语句当中 ; 用于输出test1的值

特别注意:以下代码是错误的,报错:Syntax error on token "else", delete this token

        int test1 = 2;
	if (test1 > 1)     // if语句判断
	    test1 = 10;
	    System.out.println(test1); // if表达式的值为true,则输出test1为10
	else
	    test1 = 100;
	    System.out.println(test1); // 此输出语句,不属于上面的 if-else 语句当中 ; 用于输出test1的值

因为:该 if-else 语句中,紧跟 () 后面的语句已经不止一条了,所以程序报错,对于else后面的 方法调用语句 System.out.println(test1) ;  是不属于该 if-else 语句中的,程序通过;

解决:去掉 test1 = 10 ; 或者 方法调用语句 System.out.println(test1) ;  即可

三、if - else if - else 语句是多条件分支语句,即多个条件来控制程序执行的流程;

1、if - else if - else 语句的语法格式:

if(表达式){
  若干语句
}else if(表达式){
  若干语句
}else if(表达式){
  若干语句
}
.
.
.
else{
  若干语句
}

2、if - else if - else 语句中每个 if 后面中表达式的值必须是boolean类型的,当值为 true 时,则执行紧跟该if的 () 后面的 {} 中的若干语句 ;当值为 false 时则继续判断下一个 else if 的 () 中表达式的值,以此类推,直到结束该  if - else if - else 语句 ;

以下代码进行演示: 当每个if后面的表达式都为 false 时,则执行最后 else 中的若干语句,最后输出test1为 100000 ;

                int test1 = 10 ;
		if(test1<1){
			test1 = 100;
			System.out.println(test1);  // 当表达式 test<1 为true,则输出 test1 的值为 100
		}else if(test1<2){
			test1 = 1000;
			System.out.println(test1);  // 当表达式 test<2 为true,则输出 test1 的值为 1000
		}else if(test1<3){
			test1 = 10000;
			System.out.println(test1);  // 当表达式 test<3 为true,则输出 test1 的值为 10000
		}else{
			test1 = 100000;
			System.out.println(test1);  
// 当以上表达式都为false时,则输出 test1 的值为 100000,并结束该if-else if-else语句
		}

3、if - else if - else 语句中,当每个 if 后面 {} 中的语句只有一条时,可以省略 {} , 但是为了增强代码的可读性,建议大家不要省略;和以上 if 语句、if - else 语句 是一样的;

4、需要注意的是,对于 if - else if - else 语句中没有最后的 else 且 每个if 后面的表达式都为 false 时,则结束当前的 if - else if - else 语句;

、switch 开关语句是单条件多分支语句;

1、switch 语句的语法格式:其中 break 是可选的,用于结束当前 switch 开关语句;

switch(表达式){
  case 常量值1: 若干语句 break;
  case 常量值2: 若干语句 break;
  case 常量值3: 若干语句 break;
  ...
  case 常量值n: 若干语句 break;
  default:
         若干语句
}

2、switch 语句的执行流程:

  • switch首先判断表达式的值,要是表达式中的值 与 case 后面的常量值相等,就执行该 case 里的若干语句直到遇见break语句为止;
  • 若执行该 case 里的若干语句没有break语句时,则程序不止执行该 case 里的若干语句,还会继续执行后继的 case 里的若干语句,直到遇见 break 语句 ;
  • 若 switch 语句中 表达式的值 与 属于 case 后面的常量值都不相等,则执行 default 后面的若干语句 ;其中 default 是可以不要的;
  • 若 switch 语句中 表达式的值 与 属于 case 后面的常量值都不相等,并且没有 default 时,该 switch 语句不执行任何操作;
  • 如下演示:因为 case 1: 后面没有 break 语句,所以会继续执行后继的 case 里的若干语句,直到遇见break语句,结果输出为 1 2 11 ;
                int test = 1 ;
		switch(test){
		 case 1: test = 1 ;System.out.println(test); 
		 case 2: test = 2 ;System.out.println(test); 
		 case 11: test = 11 ;System.out.println(test); break;
                 case 12: test = 12 ;System.out.println(test); 
		 default: test = 0 ;
		}

3、switch 语句中 () 里 “ 表达式 ” 的值可以是byte、short、int、char类型的值;如下演示:

                int test = 11 ;
		double testd = 100 ;
		switch(test){
		 case 1: test = 1 ;System.out.println(test); break; 
		 case 2: test = 2 ;System.out.println(test); break; 
		 case 11: test = 11 ;System.out.println(test); break; 
		 default: test = 0 ;
		}

需要注意的是,switch 中 () 里 “ 表达式 ” 的值不可以是 long、float、double 类型的值,否则报错:

Cannot switch on a value of type double. Only convertible int values, strings or enum variables are permitted

4、switch 语句中 case 常量值: 中常量值也可以是byte、short、int、char类型的值,而且是互不相同的;如下演示:

                int test = 1 ;
		switch(test){
		 case 1: test = 1 ;System.out.println(test); 
		 case 2: test = 2 ;System.out.println(test); 
		 case 'a': test = 11 ;System.out.println(test); break; 
		 case (byte)10: test = 12 ;System.out.println(test); 
		 default: test = 0 ;
		}

总结 if、if-else、if-else if-else语句 与 switch 开关语句 之间的异同点:

1、if、if-else、if- else if- else 语句 之间的共同点是程序根据 一个条件执行一个分支操作,而不是选择执行多个分支操作;

2、与上面 if、if-else、if- else if- else 语句 不同的是, 在switch语句中,可以通过合理地使用 break 语句,达到一个条件执行一个分支的操作(即只执行一个case后面的若干语句),也可以达到多个操作的操作(即执行多个case后面的若干语句,如以上第2点的代码演示);

代码练习: 使用switch语句实现 判断用户从键盘输入一个整数是否为中奖号码;

      System.out.println("请输入一个整数进行抽奖,并按回车键(Enter)结束输入:");
		Scanner inputs = new Scanner(System.in);
		int number = inputs.nextInt();
		switch(number){
		 case 11: System.out.println("恭喜中特等奖!中奖号码为:"+number);break;
		 case 12: 
		 case 13: System.out.println("恭喜中一等奖!中奖号码为:"+number);break;
		 case 14:
		 case 15:
		 case 19: System.out.println("恭喜中二等奖!中奖号码为:"+number);break;
		 case 22:
                 case 23:
                 case 24:
		 case 25: System.out.println("恭喜中三等奖!中奖号码为:"+number);break;
		 default: System.out.println("很遗憾"+number+"没有中奖");
		}

其中:特等奖为一名,一等奖为两名,二等奖为三名,三等奖为四名;

 

 

 

上一篇:

下一篇: