2013-04-25 69 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.