所以我有一个前面的问题,但意识到我发布了错误的代码。我在下面标出了这些违规的陈述。无法访问的声明与中断
我想要做的是使用该switch语句为每个操作符设置优先级。
也许有人可以指出我正确的方向。
就像一个笔记,我运行JAVA 7所以字符串开关将工作。
代码
opType.java
import java.io.*;
public final class opType {
public static opType ADD = new opType("Add");
public static opType SUB = new opType("Sub");
public static opType MULT = new opType("Mult");
public static opType DIV = new opType("Div");
public static opType MOD = new opType("Mod");
public static opType LPAR = new opType("LParen");
public static opType RPAR = new opType("RParen");
protected String name;
private opType(String n)
{
name = n;
}
public String getName()
{
return name;
}
Operator.java
public class Operator extends Token {
protected opType val;
public boolean isOperator() { return true; }
public boolean isOperand() { return false; }
protected int getPrec()
{
switch(val.getName())
{
case "LParen":
{
return 0;
break; //unreachable
}
case "RParen":
{
return 0;
break; //unreachable
}
case "Mult":
{
return 1;
break; //unreachable
}
case "Div":
{
return 1;
break; //unreachable
}
case "Mod":
{
return 1;
break; //unreachable
}
case "Add":
{
return 2;
break; //unreachable
}
case "Sub":
{
return 2;
break; //unreachable
}
}
return 0;
}
public static int compare(Operator a, Operator b)
{
if(a.getPrec() == b.getPrec())
return 0;
else if(a.getPrec() < b.getPrec())
return -1;
else
return 1;
}
public opType getVal() { return val; }
public Operator(opType v) { val = v; }
}
你能说清楚你的意思是什么吗?你的意思是在循环之外的那个之前的那些人。对不起,当谈到Java时,我是一个noob。 – SlashTag
他的意思是,在你所有的情况下,你都有'return x;休息;'哪里'X'是一些常数。既然你有这些回报,这些休息就不会被执行。 –