Има ли разлика между писането на множество if
изрази и if-else-if
изрази?
Когато се опитах да напиша програма с множество изрази if
, тя не даде очакваните резултати, но работи с if-else-if
.
Условията бяха взаимно изключващи се.
Има ли разлика между писането на множество if
изрази и if-else-if
изрази?
Когато се опитах да напиша програма с множество изрази if
, тя не даде очакваните резултати, но работи с if-else-if
.
Условията бяха взаимно изключващи се.
Когато пишете няколко израза if, възможно е повече от един от тях да бъде оценен като верен, тъй като изразите са независими един от друг.
Когато пишете един оператор if else-if else-if ... else, само едно условие може да бъде оценено като вярно (след като бъде намерено първото условие, което се оценява като вярно, следващите условия else-if се пропускат).
Можете да накарате няколко оператора if да се държат като един оператор if else-if .. else, ако всеки от блоковете с условия излиза от блока, който съдържа операторите if (например чрез връщане от метода или прекъсване от цикъл).
Например :
public void foo (int x)
{
if (x>7) {
...
return;
}
if (x>5) {
...
return;
}
}
Ще има същото поведение като:
public void foo (int x)
{
if (x>7) {
...
}
else if (x>5) {
...
}
}
Но без операторите за връщане ще има различно поведение, когато x›5 и x›7 са верни.
Не и двете не са еднакви. ако изявленията ще проверят всички условия. Ако ще напишете множество оператори if, това ще провери всяко условие. If else ще проверява условията, докато не бъдат удовлетворени. След като if/else if е удовлетворено, той ще бъде извън този блок.
Да, има значение: вижте If-then и if-then- изявления else.
Освен това можете лесно да го тествате.
Код #1:
int someValue = 10;
if(someValue > 0){
System.out.println("someValue > 0");
}
if(someValue > 5){
System.out.println("someValue > 5");
}
Ще изведе:
someValue > 0
someValue > 5
Докато код #2:
int someValue = 10;
if(someValue > 0){
System.out.println("someValue > 0");
}else if(someValue > 5){
System.out.println("someValue > 5");
}
Ще изведе само:
someValue > 0
Както можете да видите, код #2 никога не отива във втория блок, тъй като първият израз (someValue > 0) се оценява на true
.
if()
{
stmt..
}
else
{
stmt
}
if()
{
stmt
}
here compiler will check for both the if condition.
Във фрагмента от кода по-долу компилаторът ще провери условията if, веднага щом първото условие if стане истина, оставащото условие if ще бъде заобиколено.
if(){
}
else if
{
}
else if
{
}
else if
{
}