2010-11-14 93 views
1

當前正在學習計劃/球拍並且在運行這段代碼時遇到問題。關於計劃/球拍的查詢 - 'if'條款

(if (or (< aftnHour 0) (> aftnHour 6)) 
    ((display 
     "You entered an invalid input. Please enter an input between 0 and 8 only.") 
    (newline)(newline)(askAftnHour)) 

我的目標是檢查一個變量是不是6介於0和如果條件滿足,我想提醒他的錯誤的用戶,並再次調用相同的方法。 newline僅用於格式化目的。

該代碼實際上是第一次當用戶輸入錯誤時,即顯示錯誤消息,然後再次調用該函數。但是,現在在進入正確的輸入,將產生一個錯誤:

「程序的應用程序:預計程序,因爲:#;參數分別爲:###」

我懷疑我做錯了什麼與我的newline,但真的無法弄清楚什麼。非常感謝您的幫助/建議。

回答

3

您在顯示前缺少開始呼叫。在()中包裝一些表達式並將它們視爲一個序列是不夠的,它們將被視爲一個函數調用,在這個例子中它是一個帶有三個無效參數的無效調用。

> (if (or(< aftnHour 0)(> aftnHour 6)) 
>  (begin (display "You entered an invalid input. Please enter an input between 0 
> and 8 only. 
> ")(newline)(newline)(askAftnHour)) 
+0

明白了,謝謝。 – Roy 2010-11-14 09:42:56