if / else und if / elseif
-
10-07-2019 - |
Frage
Wenn ich ein Anweisungsblock wie folgt aus:
if (/*condition here*/){ }
else{ }
oder wie folgt aus:
if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}
Was ist der Unterschied?
Es scheint, dass mit if / else, wenn ein Teil für wahre Zustand ist und der andere Teil ist für alle anderen möglichen Optionen (false). Ein anderes, wenn würde für eine Reihe von Bedingungen nützlich sein. Das ist mein Verständnis, gibt es etwas mehr mir bewusst sein sollte?
Lösung
Situation ein:
if( condition )
{
}
else
{
}
Wenn die Bedingung in der obigen Aussage falsch ist, dann werden die Anweisungen in dem else-Block immer ausgeführt werden.
Situation b:
if( condition )
{
}
else if( condition2 )
{
}
else
{
}
Wenn ‚Bedingung‘ falsch ist, dann in der anderen die Anweisungen, wenn Block wird nur dann ausgeführt werden, wenn condition2 wahr ist. Die Aussagen in der else-Block wird ausgeführt, wenn condition2 falsch ist.
Andere Tipps
Ohne „elseif“ Syntax würden Sie haben Kette zu schreiben, wenn-Anweisungen für die Verarbeitung einer von mehreren möglichen Ergebnissen auf diese Weise:
if( str == "string1" ) {
//handle first case
} else {
if( str == "string2" ) {
//handle second case
} else {
if( str == "string3" ) {
//handle third case
} else {
//default case
}
}
}
stattdessen können Sie schreiben
if( str == "string1" ) {
//handle first case
} else if( str == "string2" ) {
//handle second case
} else if( str == "string3" ) {
//handle third case
} else {
//default case
}
, die vollständig die gleiche wie die vorherige ist, sieht aber viel schöner und ist viel einfacher zu lesen.
Viele Sprachen haben eine grammer wie folgt aus (hier: ECMAScript Language Specification , so JavaScript):
IFSTATEMENT :
if (
Expression)
Statementelse
Statement
if (
Expression)
StatementStatement :
Block
VariableStatement
EmptyStatement
ExpressionStatement
IFSTATEMENT
IterationStatement
ContinueStatement
BreakStatement
ReturnStatement
WithStatement
LabelledStatement
SwitchStatement
ThrowStatement
TryStatementBlock :
{
Statement opt}
Statement :
Statement
Statement Statement
So die Zweige eines IFSTATEMENT kann einen Block von Anweisungen enthalten ( Block ) oder eines der anderen Aussagen (außer Block ) . Das heißt, dies gilt:
if (expr)
someStatement;
else
otherStatement;
Und wie Statement nur eine einzige Anweisung enthält, sind diese Beispiele äquivalent zu dem vorherigen:
if (expr) {
someStatement;
} else {
otherStatement;
}
if (expr)
someStatement;
else {
otherStatement;
}
if (expr) {
someStatement;
} else
otherStatement;
Und wenn wir ersetzen otherStatement
durch eine zusätzliche IFSTATEMENT , bekommen wir diese:
if (expr) {
someStatement;
} else
if (expr) {
someOtherStatement;
}
Der Rest ist nur Code-Formatierung:
if (expr) {
someStatement;
} else if (expr) {
someOtherStatement;
}
betonend, was Gumbo sagte.
, auch wenn eine Sprache, hat eine echte elif / elsif / elseif (sagen wir, eine „echte“ elseif Anweisung anstelle einer Art von verschachtelten Verkettungs versteckt durch Formatierung), dann kann der Compiler easly einen einzelnen Knoten emittieren in einem Abstract Syntax-Baum (oder ähnlich, siehe http://en.wikipedia.org/wiki/Abstract_syntax_tree ), anstatt sie zu nisten.
Um ein Beispiel zu geben:
Sagen in C / C ++ Sie haben:
if (a) {
X
} else if (b) {
Y
} else if (c) {
Z
} else {
0
}
Dann wird der Compiler einen AST-Knoten wie folgt aufbauen:
a
/ \
X b
/ \
Y c
/ \
Z 0
Aber wenn die Sprache der Wahl hat eine echte if-else:
if (a) {
X
} elif (b) {
Y
} elif (c) {
Z
} else {
0
}
Dann könnte der AST leichter aussehen:
(a--b--c)
/ / / \
X Y Z 0
In einer solchen Sprache, ein „wenn sonst“ nur möglich wäre, wenn Klammern sind nicht zwingend notwendig:
if (a) {
X
} elif (b) {
Y
} else if (c) { // syntax error "missing braces" if braces mandatory
Z
} else {
0
}
Entsprechende AST (, wenn Klammern sind nicht obligatorisch ):
(a--b)
/ / \
X Y c
/ \
Z 0
Dies könnte machen CFG-Analyse ( http://en.wikipedia.org/wiki/Control_flow_graph ) leichter zu implementieren (obwohl es vielleicht keine tatsächliche Optimierung Nutzen sein, so imho es nur den faulen Programmierer profitieren würde. D)
else if
bedeutet im Grunde das else
Teil if
ist eine weitere if
Aussage.
**if/else**
if(condition)
statement;
else
statement;
if / else if / else
if(condition)
{
if(condition)
statement;
else
statement;
}
else if(condition)
{
if(condition)
statement;
else
statement;
}
else
statement;
if / else und wenn / sonst, wenn auch wie folgt verwendet
eine einzelne Variable gegeben, werden Sie die einfache if-else
Struktur verwenden. Wenn mehrere Variablen sind, und Sie haben einen anderen Weg für die verschiedenen Möglichkeiten auszuführen, werden Sie if-else if-...-else
verwenden. Beachten Sie, dass dieser endet auch mit einer else
Aussage.
Du hast die Antwort schon selbst. if / else für wahr / falsch Ergebnis ist, ist wie ein int = 2 oder jeder anderer möglicher int Wert, und wenn / elseif ist für mehr als 2 Ergebnisse, wie ein int = 2 und int = 3 und so weiter.
Auch Gruppen den Kontext einer Variablen. Sie könnten jedes einzelne Ergebnis überprüfen wie
if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };
Mit if / else / elseif es ist besser lesbar.
Wenn Sie wollen mehr Zustand überprüfen wir if..elseif verwenden können. einzige Bedingung, dann können wir, wenn oder if ... else verwenden.
Hier kann ich nicht in der Lage, die vollständige Erklärung mit Beispiel zu laden, so gehen Sie bitte die folgenden Links.
if..else Aussage Details
http://allinworld99.blogspot.in/2016 /02/ifelse-flow-chart-with-easy-example.html
if ... elseif Details
http://allinworld99.blogspot.in /2016/02/flow-chart-with-example-for-if-then.html
import java.util.*;
public class JavaApplication21 {
public static void main(String[] args) {
Scanner obj = new Scanner(System.in);
System.out.println("You are watching an example of if & else if statements");
int choice, a, b, c, d;
System.out.println(" Enter 1-Addition & 2-Substraction");
int option = obj.nextInt();
switch (option) {
case (1):
System.out.println("how many numbers you want to add.... it can add up to 3 numbers only");
choice = obj.nextInt();
if (choice == 2) {
System.out.println("Enter 1st number");
a = obj.nextInt();
System.out.println("Enter 2nd number");
b = obj.nextInt();
c = a + b;
System.out.println("Answer of adding " + a + " & " + b + " is= " + c);
} else if (choice == 3) {
System.out.println("Enter 1st number");
a = obj.nextInt();
System.out.println("Enter 2nd number");
b = obj.nextInt();
System.out.println("Enter 3rd number");
c = obj.nextInt();
d = a + b + c;
System.out.println("Answer of adding " + a + " , " + b + " & " + c + " is= " + d);
}
case (2):
System.out.println("how many numbers you want to substract.... it can substract up to 3 numbers only");
choice = obj.nextInt();
if (choice == 2) {
System.out.println("Enter 1st number");
a = obj.nextInt();
System.out.println("Enter 2nd number");
b = obj.nextInt();
c = a - b;
System.out.println("Answer of substracting " + a + " & " + b + " is= " + c);
} else if (choice == 3) {
System.out.println("Enter 1st number");
a = obj.nextInt();
System.out.println("Enter 2nd number");
b = obj.nextInt();
System.out.println("Enter 3rd number");
c = obj.nextInt();
d = a - b - c;
System.out.println("Answer of substracting " + a + " , " + b + " & " + c + " is= " + d);
}
default:
System.out.println("no option you have chosen" + option);
}
}
}