我正在开发一个Scheme函数,该函数接受两个单词,并检查它们的长度是否相同。如果它们具有相同的长度,它应该输出'same length‘,如果它们不具有相同的长度,则使用它们的长度指定较长和较短的字符串。所以我试着
(define (strings x y)
(if (= (string-length x)(string-length y))
display "same length"
(string-length x)(string-length y)))但是它说两个字符串的长度是相同的,如果我把括号放在“相同的长度”上,它也只打印x的字符串长度。我不知道该怎么去修理它。
发布于 2021-10-07 04:50:38
您格式化代码的方式与IDE所做的并不一致。例如:将您的代码粘贴到DrRacket中,然后按CTRL+i键,我会得到:
(define (strings x y)
(if (not (= (strings-length x)(strings-length y))
(display "same length")) ; this is second argument to not
(if (> (strings-length x)(strings-length y))
((strings-length x)(strings-length y)))))因此,第一个if使用两个参数调用not,因为在行尾缺少闭合括号。您还缺少else子句,这样一次错误的测试就会把结果留给实现。
基本上,你是在追求这个:
(if (= (string-length x) (string-length y))
what-to-do-when-true
what-to-do-when-false)请注意,您不需要第二个if,因为您正在测试与第一个相反的代码,并且您肯定会在代码what-to-do-when-false中结束。还要注意,我删除了not,所以您只需切换顺序即可。如果您愿意,可以重新添加not,但不要忘记括号。
https://stackoverflow.com/questions/69475277
复制相似问题