J2SE_条件语句

来源:互联网 发布:像堆糖的软件 编辑:程序博客网 时间:2024/05/17 07:47

一、if ... else if ...else

判断多个条件的时候使用,示例代码如下:

public class TestDemo1 {public static void main(String[] args) {int a = 10;if (a == 1){System.out.println("xxxxx");}else if (a == 5){System.out.println("yyyyy");}else if (a == 10){System.out.println("zzzzz");}else{System.out.println("doesn't exist!");}}}
输出结果:zzzzz

这是正常的使用情况。但是,如果你的条件满足其中多个分支并且你希望都执行时,这样做逻辑上是错误的。示例代码如下:

public class TestDemo {public static void main(String[] args) {int a = 6;if (a > 1){System.out.println("xxxx");}else if (a > 2){System.out.println("yyyy");}}}

输出结果:xxxx

以上代码中,a > 1 并且 a > 2, 但是这里只会输出:xxxx, 不会执行yyyy的输出。因为if ...esle if 当前面有一个分支满足条件时,之后的分支即使有满足条件的也不会执行。

此时应该使用两个独立的if语句即可。代码示例如下:

public class TestDemo2 {public static void main(String[] args) {int a = 6;if (a > 1){System.out.println("xxxx");}if (a > 2){System.out.println("yyyy");}}}
输出结果:xxxx

                    yyyy
以上的问题很小,但是不可小视,否则会在开发中带来很大麻烦。


二、switch ... case ...

一种很简便的选择语句,switch(a),其中a只支持数字,字符,枚举(1.5之后)

代码示例:

public class TestDemo3 {public static void main(String[] args) {int a = 5;switch (a) {case 1 : System.out.println("xxxx");case 5 : System.out.println("yyyy");case 10 :System.out.println("zzzz");default : System.out.println("doesn't exist!");}}}
输出结果:yyyy
                    zzzz
                   doesn't exist!

以上结果可以看出,匹配到符合条件的case分支时,开始执行,一直到switch的结束。如果没有符合条件的case分支语句时, 就执行default语句(没有default就什么都不执行)。但是,我们只希望执行yyyy,解决办法是在每一个case语句后面加上break语句,让程序跳出switch语句。正确使用的代码示例如下:

public class TestDemo3 {public static void main(String[] args) {int a = 5;switch (a) {case 1 : System.out.println("xxxx");break;case 5 : System.out.println("yyyy");break;case 10 :System.out.println("zzzz");break;default : System.out.println("doesn't exist!");}}}

结合枚举使用switch, 示例代码:

enum Color { //不可以用public来修饰,因为Color本质是一个类,而在一个Java文件中,至多有一个public类RED, BLUE, BLACK;}public class TestDemo4 {public static void main(String[] args) {Color c = Color.BLUE;switch (c){       //等价于Color.BLUEcase RED :    //Color.RED 会报错 System.out.println("red");break;case BLUE : System.out.println("blue");break;case BLACK : System.out.println("black");break;default : System.out.println("error");}}}


0 0