2013-04-25 43 views
0

我写了一个方法,它从控制台获取用户输入并将其转换为列表。之后,它输入一个if语句,它检查列表的第一个元素(或第一个输入的单词)是否为'A'。如果是,请打印“是”,然后打印“否”。到目前为止,尽管有用户输入,但我只能将其打印为“否”。If-else语句检查列表中的第一个项目总是返回false?

start :- 
    read(String), 
    string_to_list(List, String), 
    (
    nth0(0,List,'A') -> 
     writeln('Yes') 
    ; 
     writeln('No.') 
). 

回答

2

您似乎正在使用string_to_list/2交换参数。第一个参数应该是字符串,第二个是列表。 然后,要检查第一项是否为'A',您应该使用该字母的代码,而不是原子'A',即0'A

start:- 
    read(String), 
    string_to_list(String, List), 
    (
    nth0(0,List,0'A) -> 
     writeln('Yes') 
    ; 
     writeln('No.') 
). 

测试:

?- start. 
|: 'ABC'. 
Yes 
true. 

?- start. 
|: 'BCA'. 
No. 
true.