You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将char字符push存入String类型的Stack栈中?

错误原因

  • 类型转换不合法:char是Java基本数据类型,String是引用类型,二者没有继承关系,无法通过(String)强制类型转换实现互转,属于语法层面的报错。
  • 分支判断逻辑错误:你写的SPECIAL_CHARACTER.contains(line)是判断整个输入字符串是否被特殊字符集合包含,完全不符合「判断当前遍历位置的单个字符是否为特殊字符」的需求,该分支永远不会触发。

修复方案

修正后的代码示例

char currentChar = line.charAt(i);
// 先判断当前单个字符是否属于特殊字符集合
else if (SPECIAL_CHARACTER.indexOf(currentChar) != -1) {
    // 合法将char转为String后压栈
    operators.push(String.valueOf(currentChar));
}

补充说明

常用的char转String的合法方式有三种:

  • 用String.valueOf(char c):性能最优、语义最清晰,是最推荐的写法
  • 用Character.toString(char c):内部封装了String.valueOf,效果和前者完全一致
  • 用"" + c:通过字符串拼接实现转换,写法最简单,但会生成临时字符串对象,性能略差

如果业务逻辑允许修改栈的定义,你也可以直接将栈的泛型改为Character,就不需要做类型转换:

// 直接声明存储Character类型的栈
Stack<Character> operators = new Stack<>();
// 压栈时直接传入char类型即可,会自动装箱为Character
operators.push(currentChar);

内容的提问来源于stack exchange,提问作者Paige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:45:05