我是一个编程初学者,我在java中创建了一个计算器,但是在为一个字符循环list2数组时遇到问题,然后转换为通过getToken方法运行的字符数据类型。有人能帮帮我吗?
这是getToken方法......
public Precedence getToken(char symbol)
{
switch (symbol)
{
case '(' : return Precedence.lparen;
case ')' : return Precedence.rparen;
case '+' : return Precedence.plus;
case '-' : return Precedence.minus;
case '/' : return Precedence.divide;
case '*' : return Precedence.times;
case '%' : return Precedence.mod;
case ' ' : return Precedence.eos;
default : return Precedence.operand;
}
}
这是后缀功能
/** Function to convert infix to postfix **/
public String postfix(String infix)
{
String postfix = "";
top = 0;
String s = infix.replaceAll("\\s+", "");
//int p = infix.length();
stack = new Precedence[infix.length()];
stack[0] = Precedence.eos;
String [] str = infix.split(" ");
List<String> list2 = Arrays.asList(str);
Precedence token;
if (s.matches("[-+/*0-9]+[-+/*0-9]"))
{
System.out.println("true");
}
else
{
System.err.println("Invalid expression!");
}
for (int i = 0; i < list2.size(); i++)
{
if (list2.get(i).matches("\\p{Punct}"))
{
token = getToken(list2.get(i));
}
}
答案 0 :(得分:1)
您的方法采用char
参数
public Precedence getToken(char symbol)
您正在尝试将字符串传递给它
List<String> list2 = Arrays.asList(str);
...
token = getToken(list2.get(i));
.charAt(0)
token = getToken(list2.get(i).charAt(0));