我编写了一个方法,从控制台获取用户输入并将其转换为列表。然后它进入if语句,检查列表的第一个元素(或输入的第一个单词)是否为“A”。如果是这样,请打印“是”否则打印“否”到目前为止,尽管用户输入,我仍然能够打印出“否”。
start :-
read(String),
string_to_list(List, String),
(
nth0(0,List,'A') ->
writeln('Yes')
;
writeln('No.')
).
答案 0 :(得分: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.