if-else语句检查列表中的第一项始终返回false?

时间:2013-04-25 20:43:37

标签: prolog

我编写了一个方法,从控制台获取用户输入并将其转换为列表。然后它进入if语句,检查列表的第一个元素(或输入的第一个单词)是否为“A”。如果是这样,请打印“是”否则打印“否”到目前为止,尽管用户输入,我仍然能够打印出“否”。

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

1 个答案:

答案 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.