使用堆栈结构java时字符和字符之间的转换

使用堆栈结构java时字符和字符之间的转换,java,char,stack,character,peek,Java,Char,Stack,Character,Peek,我正在使用堆栈将中缀转换为后缀表达式。我声明了cur=input.charAt(I)。我想检查cur是否是一个数字。如果是这样,我将把它添加到字符串后缀的末尾。我写了代码: String nonNumbers= "+_*/()" while (!nonNumbers.contains(s.peek().charValue())){ postFixExp=postFixExp+cur;} 由于我推送到堆栈中的字符被自动转换为字符对象(我猜),所以我使

我正在使用堆栈将中缀转换为后缀表达式。我声明了
cur=input.charAt(I)
。我想检查cur是否是一个数字。如果是这样,我将把它添加到字符串后缀的末尾。我写了代码:

String nonNumbers= "+_*/()"
while (!nonNumbers.contains(s.peek().charValue())){
                       postFixExp=postFixExp+cur;}
由于我推送到堆栈中的字符被自动转换为字符对象(我猜),所以我使用charValue()从堆栈中获取字符,并查看字符串nonNumbers是否包含此字符

但我收到了错误消息“错误:找不到符号” 而(!nonNumbers.contains(s.peek().charValue())){ ^ 符号:方法charValue() 位置:class Object“当尝试编译时。有人能帮我吗?非常感谢!

方法contains()不能应用于字符参数。它必须是CharSequence,这意味着您可以将string或stringbuffer类型的对象传递给它。我建议使用

s.peek().toString();
而不是

s.peek().charValue()

你真的忘了用分号来结束这里的第一行吗?如果是,你是在使用IDE(它会提醒你这个错误)?如果不是,为什么不呢?堆栈中的元素不是整数,而是字符,我想我们不能在这里使用toString()?