2016-09-22 19 views
1

私はAdaと一緒に作業しています。制御文に中カッコがないと、少し混乱しています。私が取得このelse if文で何が問題になりますか?

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文を閉じていなかった私は、次のif-else文を書かれています。遅れていて、終日働いていたので、疲れているかもしれません。誰も助けることができますか? "ほかの場合は" 適切ではありませんので

+0

'then nextInteger> secondLargest then'最初に 'then'を取り除きます。 –

+0

それはエラーメッセージを取り除かなかったのです。 – mpowell48

+1

"であり、次に"短絡および動作である - 第1部分が真である場合にのみ第2部分が実行される。短絡またはそれに対応する "または"がある。そのように "後"を取り除くと、特に何も与えていない - あなたが本当にそれらを必要としない限り短絡フォームを使用すべきではありません。 – 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"を使用してください。

関連する問題