0

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

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

1 回答 1

2

您似乎正在使用string_to_list/2交换参数。第一个参数应该是字符串,第二个参数应该是列表。然后,要检查第一项是否是 an'A'您应该使用该字母的代码,而不是 atom '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.
于 2013-04-25T21:11:12.423 回答