我在JESS(Java專家系統Shell)中有一個任務,我遇到了一些麻煩。我試圖檢查某個變量(從鍵盤讀取)是一個正整數(我已經設法檢查它是否爲正),但我找不到方法(或函數)以檢查變量是否是整數/數字。JESS - >如何檢查變量的類型並測試它?
我試過功能intergerp和numberp但這些似乎並不奏效。
有人可以幫助我嗎?
我在JESS(Java專家系統Shell)中有一個任務,我遇到了一些麻煩。我試圖檢查某個變量(從鍵盤讀取)是一個正整數(我已經設法檢查它是否爲正),但我找不到方法(或函數)以檢查變量是否是整數/數字。JESS - >如何檢查變量的類型並測試它?
我試過功能intergerp和numberp但這些似乎並不奏效。
有人可以幫助我嗎?
integerp
確實是檢查某些東西是否是整數的方法,正如您在下面的記錄中看到的。
Jess> (bind ?x (read))
1
1
Jess> (integerp ?x)
TRUE
Jess> (bind ?y (read))
foo
foo
Jess> (integerp ?y)
FALSE
Jess> (bind ?z (read))
1.1
1.1
Jess> (integerp ?z)
FALSE
謝謝弗裏德曼希爾先生,我會更好地看看它,看看爲什麼我的規則不起作用:) – 2013-02-27 15:03:24
(defrule error (declare(auto-focus TRUE)) ?f < - (kb ?x)的 (試驗(numberp X?)) => (打印輸出噸 「請插入的整數」 CRLF)) (defrule誤差 (聲明(自動聚焦TRUE)) ˚F< - ?(KB ?x) (numberp?x) => (打印輸出t「請插入一個整數」crlf)) 我試圖做的規則有兩種不同的嘗試。我從MAIN模塊的鍵盤讀取了一個特定的值,如果這個變量不是一個整數,那麼這個規則將被觸發,並且會要求用戶再次插入值。 – 2013-02-27 15:08:56
第一個是正確的,但第二個是錯誤的;規則的左側包含模式,而不是函數調用(「測試」在這裏被稱爲模式)。但是第一個應該可以正常工作,假設有一些事情聲明瞭一個「kb」的事實,從鍵盤讀取的值。所以也許你應該告訴我這個事實是從哪裏來的。 – 2013-02-27 15:13:26
我回答,但我懷疑會有更多這樣的。如果你修改你的問題來解釋爲什麼'integerp'沒有做你想做的事,我可以在我的答案中詳細說明。 – 2013-02-27 14:42:53