2016-09-22 34 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」。