2013-02-27 3 views
2

JESS (Java Expert System Shell)에 과제가 있는데 문제가 있습니다.JESS -> 변수의 유형을 확인하고 테스트하는 방법?

특정 변수 (키보드에서 읽음)가 양수인지 확인하려고합니다. (이미 양수인지 확인해 보았습니다.)하지만 (키보드에서 읽는 방법) 함수를 찾을 수 없습니다. 변수가 정수/숫자인지 확인하십시오.

나는 및 numberp intergerp 기능을 을 시도했지만이 작동하지 않는 것.

누군가가 도와 줄 수 있습니까?

+0

나는 대답했다. 그러나 나는 이것에 더 많은 것이있을 것이라고 생각한다. 'integerp'가 원하는 것을하지 않는 이유를 설명하기 위해 질문을 수정한다면, 나는 나의 대답을 자세히 설명 할 수있다. –

답변

0

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 
+0

Mr. Friedman-Hill, 감사합니다. 내 규칙이 제대로 작동하지 않는 이유를 확인하십시오. –

+0

(defrule error (declare (auto-focus TRUE)) ? f <- (kb ? X) (테스트 (numberp X?)) => ) F <(인쇄물 t는 CRLF)) (선언 (자동 초점 TRUE (defrule 오류 "정수 입력 해주십시오") - (킬로바이트 ? x) (numberp? x) => (인쇄물 t "정수를 넣으십시오"crlf) 두 가지 시도가 있습니다. MAIN 모듈의 키보드에서 특정 값을 읽었습니다.이 변수가 정수가 아닌 경우이 규칙이 트리거되고 사용자에게 값을 다시 입력하라는 메시지가 표시됩니다. –

+0

첫 번째 것은 정확하지만 두 번째 것은 잘못되었습니다. 규칙의 왼쪽에는 함수 호출이 아닌 패턴이 포함되어 있습니다. 여기서는 패턴으로 계산됩니다. 그러나 첫 번째 항목은 제대로 작동해야합니다. 즉, 항목에 하나의 항목이있는 'kb'사실이 있다고 가정하면 값을 키보드에서 읽습니다. 어쩌면 당신은 그 사실이 어디서 왔는지 보여줘야 할 것입니다. –