2009-09-17 61 views
6

我试图辨别if,else和else之间有什么区别?

if 
else 
else if 

何时使用它们,何时不区别?

我有一大堆实例的作业分配,并且由于不知道每个实例之间的差异而导致代码错误。

有人可以定义如何使用这些?

+1

您可能还想查看如何使用“case”语句,因为它是C中的另一个主要条件组件,并且与if/else if/else结构形成鲜明对比。 – 2009-09-17 16:35:19

+0

使用它们(它们危害了大多数编程语言中的基本分支结构) - 那么您将看到它们的功能,它们的工作方式以及它们的用途。 – 2010-12-22 07:45:25

回答

20
**IF** you are confused 
read the c# spec 
**ELSE IF** you are kind of confused 
read some books 
**ELSE** 
everything should be OK. 

:)

+12

阅读C#规范学习C可能会让某人更加困惑... – 2015-10-03 01:53:37

+0

markdown,对不对? – 23ars 2016-11-25 13:14:45

53

一种if声明如下这种结构的:

if (condition) 
{ 
    // executed only if "condition" is true 
} 
else if (other condition) 
{ 
    // executed only if "condition" was false and "other condition" is true 
} 
else 
{ 
    // executed only if both "condition" and "other condition" were false 
} 

if部是指绝对强制性的唯一块。 else if允许你说“好吧,如果前面的条件不是真的,那么如果这个条件是真的......”。其他人说“如果以上条件都不是真的......”

您可以有多个else if块,但只有一个if块和只有一个(或零)else块。

+6

只需要明确OP:在通过一组if/else语句的过程中,将只执行一个语句块。所以如果'condition'和'other condition'都是真的,那么只有条件的代码会被执行。 – fbrereto 2009-09-17 16:33:56

+0

@fbrerto:好的,谢谢! – 2009-09-17 16:37:07

+0

啊所以如果你在一个if里有多个选择,那么你使用else if? – HollerTrain 2009-09-17 16:38:09

13

如果,否则,如果所有结构都有助于'分支'代码。基本上,只要你想做决定就雇用他们。

一个例子是'如果阳光明媚,我会去外面。否则,我会留在里面”

在代码(忽略多余的东西)

if (sunny) { 
    goOutside(); 
} 
else { 
    stayInside(); 
} 

你可以使用‘否则,如果’语句,如果你想添加‘额外’的条件。扩展前面的例子,“如果是晴天,我会去外面如果是暴风雨,我会去到地下室,否则我会留在里面。”

在代码

if (sunny) { 
    goOutside(); 
} 
else if (stormy) { 
    goDownstairs(); 
} 
else { 
    stayInside(); 
} 

EDIT部分:

以下是您可以如何撰写多个ifs和条件。下面的例子至少可以写成两种方式:

'如果阳光明媚,温暖的话,走出室外。如果天气晴朗而寒冷,什么也不做”

if (sunny) { 
    if (warm) { 
    goOutside(); 
    } 
    else if (cold) { 
    doNothing(); 
    } 
} 

OR

if (sunny && warm) { 
    goOutside(); 
} 
else if (sunny && cold) { 
    doNothing(); 
} 
+2

使用现实世界的概念,而不是像'condition'或'a','b'等占位符+1。 – 2009-09-17 17:07:03

+0

+1为真实世界的概念。您如何定义以下内容,因为这是我遇到问题的地方: 如果阳光明媚的去外面。如果晴天去公园。如果阳光明媚的去商店。如果天气晴朗,请去discoteck。 如果它暴风雨下楼。如果暴风雨进入客厅。如果暴风雨进入客厅。如果它暴风雨进入你的卧室。 – HollerTrain 2009-09-17 17:19:38

+0

如果主内部有多个if如果我在哪里遇到问题 – HollerTrain 2009-09-17 17:20:52

1

else if可以配合使用‘如果’和‘其他’,进一步打破逻辑

//if less than zero 
if(myInt < 0){ 
     //do something 
}else if(myInt > 0 && myInt < 10){ 
//else if between 0 and 10  
     //do something 
}else{ 
//else all others 
     //do something 
} 
1

if语句的语法是

if(condition) 
    something; // executed, when condition is true 
else 
    otherthing; // otherwise this part is executed 

所以,基本上,elseif构建体的一部分(东西otherthing通常封闭在{}复合语句和else的部分是,在实际上,可选)。并且else if是两个if的组合,其中其他本身是if

if(condition1) 
    something; 
else if(condition2) 
    otherthing; 
else 
    totallydifferenthing; 
28

If-elseif-else可以写成嵌套的if-else。这些是(从逻辑上说)当量:

if (A) 
{ 
    doA(); 
} 
else if (B) 
{ 
    doB(); 
} 
else if (C) 
{ 
    doC(); 
} 
else 
{ 
    doX(); 
} 

相同:

if (A) 
{ 
    doA(); 
} 
else 
{ 
    if (B) 
    { 
     doB(); 
    } 
    else 
    { 
     if (C) 
     { 
      doC(); 
     } 
     else 
     { 
      doX(); 
     } 
    } 
} 

其结果是,最终只有一个doAdoBdoC,或doX进行评价。

+7

我很高兴有人指出'其他if'不是关键字,并else'的'只是一个格式化的组合和'if' – GManNickG 2009-09-17 16:42:55

+1

同意GMAN,这不是Python的, Perl,VB等。这里只有如果还有这里。 – Pod 2009-09-17 16:50:23

9

没有“else if”。您有以下:

if (condition) 
    statement or block 

或者:

if (condition) 
    statement or block 
else 
    statement or block 

在第一种情况下,如果条件为真(不是0)执行语句或块。在第二种情况下,如果条件为真,则执行第一个语句或块,否则执行第二个语句或块。

因此,当您编写“else if”时,这是一个“else statement”,其中第二个语句是if语句。如果你尝试这样做可能会出现问题:

if (condition) 
    if (condition) 
     statement or block 
else 
    statement or block 

这里的问题是你想要的“else”是指第一个“if”,但是你实际上指的是第二个。你这样做解决这个问题:

if (condition) 
{ 
    if (condition) 
     statement or block 
} else 
    statement or block 
+3

正是这个问题,被称为“晃来晃去ELSE”的问题,首先在PASCAL(或可能ALGOL)看到,早在开发C,导致吉恩·奇比亚和他的团队采用的控制结构的完全括号风格阿达。 – 2009-09-17 17:01:54

+1

+1因为没有“else if”语句。有一个'if'语句包含一个语句,当[真]和[可选]语句假时。开发者可以利用虚假的语句来检查新的条件,并且由于这是一个无处不在的情况,因此它被称为“else if”。 – 2009-09-17 17:22:52

1

这些都是你在大多数的编程语言有基本的决定,命令;它可以帮助你决定你的程序要做的动作的流程。 的如果告诉你有一个问题,编译器,问题是

if (condition) { 
    thingsToDo().. 
} 

其他部分括号之间疾病是一种除了这种结构告诉编译器什么,如果做条件是假

if (condition) { 
    thingsToDo().. 
} else { 
    thingsToDoInOtherCase().. 
} 

可以结合使用这些形成否则,如果这是当第一个条件是假的,但你想要做什么决定之前,另一个问题这样做。

if (condition) { 
    thingsToDo().. 
} else if (condition2) { 
    thingsToDoInTheSecondCase().. 
}else { 
    thingsToDoInOtherCase().. 
} 
+0

在最后一个前你是否错过了一个}关闭其他如果? – HollerTrain 2009-09-17 18:29:29

2
if (numOptions == 1) 
    return "if"; 
else if (numOptions > 2) 
    return "else if"; 
else 
    return "else"; 
+2

我觉得你的意思'numOptions == 1' – 2009-09-17 16:52:56

+0

我很尴尬...... – AShelly 2009-09-21 04:54:07

1

if语句使用逻辑表达式的结果,以决定是否两个码块中的一个将被执行。

有了这个代码

if (logical expression) { 
    code block 1; 
} else { 
    code block 2; 
} 

如果逻辑表达式为真,仅在码块1中的语句将被执行;如果为false,则只显示代码块2中的语句。

如果存在多个类似的测试(例如,如果我们测试的数字小于零,等于零或大于零)那么第二个测试可以作为else代码块的第一条语句。

if (logical expression 1) { 
    code block 1; 
} else { 
    if (logical expression 2) { 
     code block 2; 
    } else { 
     code block 3; 
    } 
} 

在这种情况下,如果逻辑表达式1为真,则执行代码块1;代码块2,如果逻辑表达式1为假并且逻辑表达式2为真;代码块3,如果两个逻辑表达式都是假的。

显然,这可以用另一个if语句被重复的代码块的第一个语句3.

的else if语句简单,就是代码的重排版本。

if (logical expression 1) { 
    code block 1; 
} else if (logical expression 2) { 
    code block 2; 
} else { 
    code block 3; 
} 
2

他们说的是什么,他们的英文意思。

IF条件为真,做一些事情,ELSE(否则)如果其他条件为真,做一些事情,ELSE做到这一点,当一切都失败了。

注意,没有别人那里,如果结构特别,只是如果其他,但语法允许别的地方,如果在一起,当你这样做的惯例是不嵌套它们更深。例如:

if(x) 
{ 
    ... 
} 
else if(y) 
{ 
    ... 
} 
else 
{ 
    ... 
} 

在语法上是相同的:

if(x) 
{ 
    ... 
} 
else 
{ 
    if(y) 
    { 
     ... 
    } 
    else 
    { 
     ... 
    } 
} 

在这两种情况下的语法是:

if *<statment|statment-block>* else *<statment|statment-block>* 

如果本身就是一个statment,使语法单独支持使用否则如果

5

死的简单的伪代码说明:

/* If Example */ 
if(condition_is_true){ 
    do_this 
} 
now_do_this_regardless_of_whether_condition_was_true_or_false 

/* If-Else Example */ 
if(condition_is_true){ 
    do_this 
}else{ 
    do_this_if_condition_was_false 
} 
now_do_this_regardless_of_whether_condition_was_true_or_false 

/* If-ElseIf-Else Example */ 
if(condition_is_true){ 
    do_this 
}else if(different_condition_is_true){ 
    do_this_only_if_first_condition_was_false_and_different_condition_was_true 
}else{ 
    do_this_only_if_neither_condition_was_true 
} 
now_do_this_regardless_of_whether_condition_was_true_or_false 
+0

如果你有 else if(different_condition_is_true){ do_this_only_if_first_condition_was_false_and_different_condition_was_true } 内附加条件我需要让? – HollerTrain 2009-09-17 17:39:43

+0

do_this_only_if_first_condition_was_false_and_different_condition_was_true可以用任何你想要的更换,如果更换为嵌套的if(条件){} do_this将相应的行为。 – JStriedl 2009-09-17 18:55:57

3

,我认为它有助于认为并非如此的“其他人”的字。

所以你会喜欢这个阅读:

if (something is true) 
{ 
    // do stuff 
} 
otherwise if (some other thing is true) 
{ 
    // do some stuff 
} 
otherwise 
{ 
    // do some other stuff :) 
} 
3
if (condition) 
{ 
    thingsToDo().. 
} 
else if (condition2) 
{ 
    thingsToDoInTheSecondCase().. 
} 
else 
{ 
    thingsToDoInOtherCase().. 
} 
0

如果和其他人如果两者都用于测试的条件。

我把if和else ..

的情况下,在如果编译器的情况下检查所有的情况下阉它是真的还是假的。 如果没有一个块执行,那么其他部分将被执行。

在else的情况下,如果编译器在得到false值时停止程序流程。它不会读取整个程序。因此,如果我们使用其他更好的性能。

但两者根据情况

我采取例如福尔排序菜单 的,如果我使用别的,如果那么它将满足以及 因为用户只能检查一个也有其重要性。 ,它会给错误 所以我用,如果在这里..

StringBuilder result=new StringBuilder(); 
      result.append("Selected Items:"); 
      if(pizza.isChecked()){ 
       result.append("\nPizza 100Rs"); 
       totalamount+=100; 
      } 
      if(coffe.isChecked()){ 
       result.append("\nCoffe 50Rs"); 
       totalamount+=50; 
      } 
      if(burger.isChecked()){ 
       result.append("\nBurger 120Rs"); 
       totalamount+=120; 
      } 
      result.append("\nTotal: "+totalamount+"Rs"); 
      //Displaying the message on the toast 
      Toast.makeText(getApplicationContext(), result.toString(), Toast.LENGTH_LONG).show(); 
     } 

now else if case 

if (time < 12) { 
    greeting = "Good morning"; 
} else if (time < 22) { 
    greeting = "Good day"; 
} else { 
    greeting = "Good evening"; 
} 

这里只满足一个条件.. 并在多个条件可以得到满足的情况下...

0

你能想到的作为一对的ifelse,其满足two actionsone given condition
ex:if下雨,拿伞伞else没有雨伞。
有两个动作

  • 去用雨伞
  • 去无伞

和两个两个动作被绑定到一个条件,i.eis it raining?

现在,考虑场景中有多个条件和行为绑定在一起。
例如:if你饿了and你没有打破,在肯德基享用餐点,else if你饿了but你一文不名,尽量妥协,else if你是不是饿了,但你只是想在咖啡馆聚会,可以试试startbucks,else做任何事情,只是不要问我饥饿或食物。我有更大的事情要担心。
else if声明将所有落入ifelse条件之间的操作串联在一起。

0

if说什么:

无论我是真还是假,经常检查其他条件了。

else if说什么:如果

只有检查其他条件,我是不正确的。