自行车内胎 发表于 2016-1-25 10:50:00

求助!这段程序怎么会报错:参数类型错误stringp nil

;该程序用以筛选输入字符串中的小写字母和数字并输出
(defun c:ti6 ()
(setq a (getstring "请输入字符串:"))
(setq n (strlen a));字符串长度
(setq i 1)
(setq x nil)        ;建立一个新字符串容器
(while (<= i n)
         (setq ai (substr a i 1)) ;ai为字符串a的第i个元素
         (setq asci (ascii ai))   ;asci为第i个元素SCII码
         (if        (or (and (>= asci 97) (<= asci 122)) (and (>= asci 49) (<= asci 57));筛选小写字母(97,112)和数字(49,57)
          );该if语句有问题,提示数据类型错误stringp nil
       
      (setq x (strcat x ai));将符合要求的字符添加入容器x
    )
   
(setq i (+ 1 i))
);while循环到此结束
(print x)
)

ll_j 发表于 2016-1-25 11:03:49

问题出在(setq x nil)一句,初始化字符串,应该使用(setq x "")。

琴剑江山_10184 发表于 2016-1-25 11:06:27

(setq x nil)      ;建立一个新字符串容器
改为 (setq x "")

自行车内胎 发表于 2016-1-25 11:20:35

琴剑江山_10184 发表于 2016-1-25 11:06 static/image/common/back.gif
(setq x nil)      ;建立一个新字符串容器
改为 (setq x "")

谢谢果然正确了

自行车内胎 发表于 2016-1-25 11:21:07

ll_j 发表于 2016-1-25 11:03 static/image/common/back.gif
问题出在(setq x nil)一句,初始化字符串,应该使用(setq x "")。

谢谢。果然如此
页: [1]
查看完整版本: 求助!这段程序怎么会报错:参数类型错误stringp nil