如何解决错误:RuntimeException不匹配的定界符:)

时间:2019-05-28 19:49:37

标签: intellij-idea clojure cursive

问题是,如果我通过08或09传递此函数(在我的REPL中),它将给我一个错误。

我尝试过删除括号,以查看错误是否会消失。

(defn format-pump-number [number]
  (if (.contains (str number) "0")
    (str number)
    (str "0" number))
    (if (> number 9)
      (if (< number 100)
        (str number)
        (throw (Exception. "Dispenser number can only be 2 characters!"))))
      (str "0" number))

我希望[number]传递正确的数字时会返回08或09。

1 个答案:

答案 0 :(得分:0)

计算机通常将ceil(100/24) = 508之类的数字解释为八进制,这是一个错误,因为八进制数字仅从0..7开始。从历史上看,人们认为使用前导零字符09是一种聪明的代码类型,这意味着“下一个数字应以base-8而不是base-10来解释”。

您已经发现,这种过于聪明的尝试会在今天引起问题。

因此,这根本不是您的功能,只是一条错误的错误消息。观察:

0

但是

(println "val=" 8) => `val= 8`

我没有收到有关“不匹配的分隔符”的错误消息,所以我不确定这是怎么产生的。