查询Scheme / Racket - 'if'子句

时间:2010-11-14 09:19:20

标签: scheme if-statement racket

目前正在学习Scheme / Racket并且运行这段代码时遇到问题。

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

我的目标是检查变量是否介于0和6之间。如果满足该条件,我想提示用户他的错误并再次调用相同的方法。 newline仅用于格式化目的。

当用户输入错误时,代码实际上第一次工作,即显示错误消息,然后再次调用该函数。但是现在输入正确的输入后,会产生错误:

  

“程序申请:预期程序,给定:#;参数为:###”

我怀疑我的newline做错了什么,但实在无法弄清楚是什么。非常感谢您的帮助/建议。

1 个答案:

答案 0 :(得分:3)

您在显示前缺少一个开始通话。在()中包含一些表达式并将它们视为一个序列是不够的,它们实际上被视为一个函数调用,在这个例子中它是一个带有三个void参数的void调用。

> (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))
相关问题