if…if…和if…else if的区别是什么?
if (条件1)
{
    //语句1
}
if (条件2)
{
    //语句2
}
这种格式中,程序会依次判断条件1和条件2是否成立并根据结果决定是否执行语句1和语句2,也就是说,第一个 if 块和第二个 if 块没有影响(除非在执行第一个 if 块的时候就凶残地 return 了)
而下面这种格式,if (条件1) 
{
    //语句1
}
else if (条件2)
{
    //语句2
}
链接:https://www.zhihu.com/question/27797637/answer/286456485
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
打个比方,下面有一个程序需要判断成绩。用户需要输入一个成绩,如果成绩大于90,输出A,大于60小于90输出B,小于60输出C,你会怎么写?我举例,用elseif和不用elseif的区别。
------------------------------程序1-----------------------------------------
System.out.println("输入成绩:");
Scanner input = new Scanner(system.in);
int score = input.nextInt();
if(score<101&&score>0){
if(score>=90){System.out.println("A");}
if(score>=60){System.out.println("B");}
if(score<60){System.out.println("C");}
}else{System.out.println("分数应该在1-100之间");}
-------------------------------程序1结束---------------------------------
假如用户输入99结果会如何? 很明显,因为99这个值,条件1(score>=90)和条件2(score>=60)均满足,所以输出结果应该是 A \n B。显然这个不满足用户需求。
所以我们就需要用到else if了。我们在条件2和条件3前各加一个else。
---------------------------程序2-------------------------------
System.out.println("输入成绩:");
Scanner input = new Scanner(system.in);
int score = input.nextInt();
if(score<101&&score>0){
if(score>=90){System.out.println("A");}
else if(score>=60){System.out.println("B");}
else if(score<60){System.out.println("C");}
}else{System.out.println("分数应该在1-100之间");}
-----------------------程序2结束---------------------------------
现在用户再输入一个99。结果就符合需求了,只输出了一个A。
这次输入99,条件1和条件2虽然都满足,但是我们的程序判断,走到if(score>=90),这句的时候发现条件满足,嗯,那我就执行它,然后走到下一行else if(score>=60),当他看到else这句话的时候,直接就跳过了,因为我已经执行过if了,不需要再执行这句话了,就算满足我也不会执行了,就是这么高冷。

                
            
        
浙公网安备 33010602011771号