本文是《凯哥陪你学系列之java基础篇》 本讲主要内容: 判断结构 程序执行顺序,从上到下一行一行的执行的。 1判断语句 if语句: 三种格式: 1:只有if语句 2:if ….else语句 3:if ….else嵌套使用 1:只有if语句的 语法: if(条件表达式) { 执行语句 } 作用:单条件判断 注意:条件表达式的结果只能是true或是false 代码演示: //需求:如果x>2输出yes int x = 3; if(x >2){ System.out.println('YES'); } System.out.println('GAME OVER'); 结果: 输出结果分析: if语句中条件表达式为true的时候才会执行被if 大括号包含的代码。 如果条件表达式为false的时候,if语句及其大括号包含的代码都不会被执行。 而 3>2 返回true所以会执行if大括号内的代码。 注意: 虽然if语句有自己的控制范围(就是if后面大括号的内容)。但是如下代码输入的结果是什么? int b = 1; if(x>0) System.out.println(b); System.out.println('GAME OVER'); 输出结果: 分析原因: 虽然if有自己控制范围,但是当if语句后面只有一行执行语句的时候,此时if后面的一对大括号可以省略。 也即是说:如果if后面没有大括号确定范围。那么if语句只能控制离其最近的单条代码。 扩展: if 语句嵌套使用: 语法: if语句嵌套使用 if(表达式){ if(条件表达式2){ 执行代码 } } 代码演示: if(x>2){ if(x==3){ System.out.println('YES'); } } System.out.println('GAME OVER'); 执行结果: 思考:自己试着分析结果由来。 思考:如下代码输入结果 if(x>2) if(x>3) System.out.println('YES'); System.out.println('GAME OVER'); 数据结果: 分析输出结果原因: 代码中两个if都没有大括号指明范围。所以if只能控制离其最近的单条语句。 所以:if(x>2) 这句离其最近的是 if(x>3) 而 if(x>3)离其最近的一句是:System.out.println('YES'); 又因为 x = 3 是大于2的。所以 x>2 返回true.就会接着执行下面一句 if(x>3)这一句。 而 x=3不大于3的。所以 x>3返回false。这时候就不会再执行其下面的一句。也就是:System.out.println('YES'); 而直接在往下一行执行。 所以YES不会被输出。而GAME OVER会被输出。 2:if()….else使用 语法: if(条件表达式){ 执行语句 }eles{ 执行语句 } 作用:单条件判断。如果不成立执行else语句 代码演示: //需求:如果x>2输出yes 否则输出no int x = 3; if(x >2){ System.out.println('YES'); }else{ System.out.println('NO'); } 输出结果: 输出结果分析: 3>2结果是true。所以就执行输出YES这条语句。而else语句不执行。 简单理解: if(你的性别是男){ 请去男厕所 }else{ 请去女厕所 } 思考: 如下代码输出什么? int a = 2 ,b; if(a>1) b = 100; else b = 200; System.out.println('b='+b); 输出结果: 扩展: 简单的if else可以使用三元运算符代替 上面代码使用三元运算符表示: b = (a>1?100:200); 完整代码: int a = 2 ,b; if(a>1) b = 100; else b = 200; System.out.println('b='+b); //使用三元运算符 b = (a>1?100:200); System.out.println('b='+b); System.out.println('GAME OVER'); 输出结果 注意: if else简化成三元运算符前提: 当if else 运算后,有一个具体的结果时候,可以简写成三元运算符。 3:ifelse嵌套使用 语法: if(条件表达式){ 执行语句 } else if(条件表达式2){ 执行语句2 }else{ 执行语句3 } 作用:多条件判断。 注意:虽然上面代码很多。但是都是对同一个事物做判断的。所以运算完成后,最终有且只有一个执行语句被执行。 代码演示: int x = 3; if(x >1){ System.out.println('1'); }else if(x >2){ System.out.println('2'); } else if( x>3){ System.out.println('3'); }else{ System.out.println('4'); } System.out.println('GAME OVER'); 输出结果: 分析原因: 因为 x = 3 所以 x>1返回true 。所以输出1。虽然 3>2 也返回的是ture.但是 (x>2)是在else语句的。只有当上面if条件返回false的时候才会执行else的语句。 所以,只输出1. 思考: 如果去掉else后,修改成如下代码,运行结果又是什么? int j = 3; if(j >1){ System.out.println('j1'); } if(j >2){ System.out.println('j2'); } if( j>3){ System.out.println('j3'); }else{ System.out.println('j4'); } System.out.println('GAME OVER'); 运行结果: 分析输出结果: if(j>1){}这个是完整的一条语句。 因为 if(j>2)前面没有else 所以 if(j>2){}这又是一条完整的语句 同理,if(j>3){}else{}这是一条完整的语句。 所以在执行完输出j1后,也会执行输出j2的语句。 有因为3不大于3.所以 j>3返回false.所以会执行else的语句,也就是输出j4的语句。 所以,输出结果就是 j1 j2 j4 if 语句练习: 1:根据用户输入的数值,输出对应的星期。 if语句练习2 需求: 根据用户输入的数值,输出对应的月中上中下旬值。 各位自己练习下。答案下节公布。 ps:欢迎关注凯哥微信公众号:凯哥Java |
|