2016-09-22 93 views
1

我正在与Ada合作,控制语句中缺少大括号让我有点混淆。我写了下面的if-else语句:这个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 

我苦苦寻找,我没有收出一个if语句。现在很晚,我一整天都在工作,所以我可能会很累。谁能帮忙?

+0

'然后nextInteger> secondLargest然后'你想摆脱那第一'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 If Statements *](http://www.ada-auth.org/standards/12rm/html/RM-5-3.html) – trashgod

+0

我现在看到。非常感谢! – mpowell48

1

因为 “如果其他人” 是不正确的。使用“elsif”。