2016-09-22 2 views
1

Я работаю с Ada, и отсутствие брекетов в контрольных заявлениях немного меня перепутало. Я написал следующее если-нибудь заявление:Что не так с этим утверждением if else?

if i = 1 then 
    largest := nextInteger; 
else if i = 2 then 
    if nextInteger > largest then 
     secondLargest := largest; 
     largest := nextInteger; 
    else 
     secondLargest := nextInteger; 
    end if; 
else 
    if nextInteger > largest then 
     secondLargest := largest; 
     largest := nextInteger; 
    else if largest > nextInteger and then nextInteger > secondLargest then 
     secondLargest := nextInteger; 
    end if; 
end if; 

Сообщение об ошибке я получаю это:

program_one.adb:15:05: missing "end if:" for "if" at line 3 
program_one.adb:15:05: missing "end if;" for "if" at line 1 

Я изо всех сил, чтобы найти, где я не закрываем, если заявление. Уже поздно, и я работаю весь день, поэтому я могу просто устать. Может ли кто-нибудь помочь?

+0

'а затем nextInteger> secondLargest then' вы хотите избавиться от этого первого' then' –

+0

Это не избавилось от сообщений об ошибках. – mpowell48

+1

", а затем" является короткое замыкание и операция - вторая часть выполняется только в том случае, если первая часть верна. для короткого замыкания или. Как таковой избавиться от «потом» после и ничего не дает, в частности, хотя вы не должны использовать формы короткого замыкания, если они вам действительно не нужны. – darkestkhan

ответ

6

попробовать, как этот

if i = 1 then 
    largest := nextInteger; 
elsif i = 2 then 
    if nextInteger > largest then 
     secondLargest := largest; 
     largest := nextInteger; 
    else 
     secondLargest := nextInteger; 
    end if; 
else 
    if nextInteger > largest then 
     secondLargest := largest; 
     largest := nextInteger; 
    elsif largest > nextInteger and then nextInteger > secondLargest then 
     secondLargest := nextInteger; 
    end if; 
end if; 
+1

неправильное написание ключевого слова "elseif" – mpowell48

+2

@ mpowell48: Вы ошибаетесь 'elsif'; см. [* 5.3 Если утверждения *] (http://www.ada-auth.org/standards/12rm/html/RM-5-3.html) – trashgod

+0

Я вижу сейчас. большое спасибо! – mpowell48

1

Потому что "иначе если" не является правильным. Используйте «elsif».