我正在尝试将用户给出的输入分成我的计算器.例如,如果用户输入"23 + 45*(1 + 1)",我希望将其分成[23,+,45,*,(,1,+,1,)].
我一直在尝试将给定列表拆分为两个不同的列表:唯一和重复.例如,如果我们有列表,[1, 1, 2, 3, 3, 4, 5]我希望唯一列表是[2, 4, 5]和重复[1, 3].我不希望列表中的所有1都在重复列表中.我只需要其中一个.我现在的代码:
compareL([_|[]], Unique, Dup).
compareL([X3,Y3 | Tail], [X3 | Unique], Dup) :-
X3 =\= Y3,
compareL([Y3 | Tail], Unique, Dup).
compareL([X3,Y3 | Tail], Unique, [X3 | Dup]) :-
X3 = Y3,
skipDups(X3, Tail, Unique, Dup).
skipDups(_, [], Unique, Dup).
skipDups(X3,[Y3 | Tail], Unique, Dup) :-
X3 =\= Y3,
compareL([Y3 | Tail], Unique, Dup).
skipDups(X3,[Y3 | Tail], Unique, Dup) :-
X3 = Y3,
skipDups(X3, Tail, Unique, …Run Code Online (Sandbox Code Playgroud) 我无法在我的程序中使用isDigit().当我使用它时说"方法isDigit(char)未定义类型计算器".*计算器是我的班级.*我正在尝试浏览字符串的所有字符,并检查它们是否是计算器的有效输入字符.
我想在我的字符串的某些部分插入空格.我正在写一个计算器程序.
例如,对于字符串
"23+45"我想要它"23 + 45".
或者"1+(4*8)"作为"1 + ( 4 * 8 )".
我这样做,以便我可以根据空格分割字符串,
我正在使用Shunting Yard算法,所以我需要标记输入.