3.3 嵌套条件语句

嵌套条件语句是指else语句又有if语句。if和else可以根据条件分两路执行,else里面又有if语句让我们可以创造超过两路的分支。格式如下:
if(条件1)
    语句1;
else if(条件2)
    语句2;
else
    语句3;
(1)被控制的语句本身也是条件语句; 在else语句里面又出现if语句,构成3条或以上的分支。else之后紧接着if语句,这里有一种紧密的写法else if。
(2)如果走到条件2,说明这时候条件1不成立,也就是条件1的否定。 第(2)条是嵌套条件语句的核心,如果已经到了else语句里面,就说明前面的if语句的条件已经不成立了,那么就是条件1的否定。看下面的例子里的错误示范:
if(a > 10)
    语句1;
else if(a > 5 && a <= 10)
    语句2;
else
     语句3;
有没有发现多余的代码是什么呢? 当a大于10的时候,执行语句1,这个很容易理解。 当a大于5并且小于等于10的时候,执行语句2。但这个时候,其实已经没有必要写a<=10这个条件了!这是必定成立的,因为能执行到语句2,肯定已经是a>10的否定了,也就是a<=10。a>5 && a<=10在这里就相当于a>5 && true,所以a<=10是没必要写的。
下面是一个评分程序,当分数是90到100分的时候,评级A;75到90的时候,评级B,其余的分数评为C:
public static void main(String[]args){
    Scanner scanner=new Scanner(System.in);
    int s=scanner.nextInt();
    if(s >= 90 && s <= 100){
        System.out.println("A");
    }
    else if(s >=75){
        System.out.println("B");
    }
    else{
        System.out.println("C");
    }
}
注意写第二个条件的时候,不需要写s<90 ,因为s必定小于90,否则就打印A了。
嵌套条件语句还需要注意下面代码的情况:
if(a > 10)
    语句1;
else if(a > 15)
    语句2;
else if(a > 5)
    语句3;
这样的语句不会有语法错误,但有逻辑错误。思考一下,语句2在什么情况下才会被执行到?应该怎么修改?