如何将字符推入字符串堆栈?

Posted

技术标签:

【中文标题】如何将字符推入字符串堆栈?【英文标题】:How to push a char into a String stack? 【发布时间】:2021-12-01 08:00:01 【问题描述】:

我正在尝试将某些字符推入给定的堆栈中:

public static double infixEvaluator(String line)
public static final String SPECIAL_CHARACTER = "()+-*/^";
Stack<String> operators = new Stack<String>();

我假设我会使用 for 循环遍历字符串,然后使用 if 语句来检查索引处的字符是特殊字符还是常规数字

else if (SPECIAL_CHARACTER.contains(line)) 
        char operator = line.charAt(i); 
        operators.push((String) operator);

使用这个例子:is there a way to add characters to a stack?

但我遇到了一个错误

无法从字符转换为字符串

我很困惑为什么它不允许它投射它?

如果需要更多代码,请告诉我

【问题讨论】:

【参考方案1】:

您可以使用String.valueOf 将其转换为String

operators.push(String.valueOf(operator));

【讨论】:

【参考方案2】:

operators.push(new String(new char[]operator));一样使用

问题是char 是一个原始数据类型,其中String 是一个由字符集合组成的对象。这里不能应用强制转换的概念,而是需要使用 char 创建一个新的 String 对象

在下面的答案中,还有很多其他不同的方法可以将 char 转换为 String。

https://***.com/a/15633542/2100051

【讨论】:

我的 Stack 运算符中没有参数,所以我将运算符更改为字符串,但我仍然会遇到相同的转换问题,例如字符串运算符 = ((String) line.charAt(i)); 问题出在等号的右边。对于任何随机类型,您不能简单地从一种类型转换为另一种类型。您尝试转换的目标类应该是原始类的子类或实现的接口。您需要按照建议的 url 中的任何有效方法将 char 转换为 String。

以上是关于如何将字符推入字符串堆栈?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串的字符推入二维向量[关闭]

如何将字符串(逐个字符)推入字符串向量

为啥我不能从字符堆栈中弹出元素?

Mongoose:将字符串推入数组

将字符串推入结构中的数组中

将字符串从数组推入正则表达式