我正在尝试构建一个程序,在使用Split函数
后读取某个Stringimport java.util.Scanner;
public class Lexa2 {
public void doit() {
String str = "( 5 + 4 ) * 2";
String [] temp = null;
temp = str.split(" ");
dump(temp);
}
public void dump(String []s) {
for (int i = 0 ; i < s.length ; i++) {
if (s[i] == "(") {
System.out.println("This is the left paren");
} else if (s[i] == ")"){
System.out.println("This is the right paren");
}else if (s[i] == "+"){
System.out.println("This is the add");
}else if (s[i] == "-"){
System.out.println("This is the sub");
}else if (s[i] == "*"){
System.out.println("This is the mult");
}else if (s[i] == "/"){
System.out.println("This is the div");
}else
System.out.println("This is a number");
}
}
public static void main(String args[]) throws Exception{
Lexa2 ss = new Lexa2();
ss.doit();
}
}
输出应该是这样的:
This is the left paren
this is a number
this is the add
this is the right paren
this is a number
答案 0 :(得分:4)
你非常接近,只需用(s[i] == "?")
(s[i].equals("?"))
答案 1 :(得分:1)
请勿使用s[i] == ")"
来比较字符串。这样,您就不会检查s[i]
中的字符串是否等于)
。
使用equals方法。然后你可以使用以下方法比较字符串:
if (s[i].equals("("))
替换其他equals
语句中的if
。
<强>更新强>
P.S。我认为比较字符串,查看代码的最佳方法是使用switch/case
语句。但是,此功能是only available in Java 7。我认为这将避免使用if
语句进行连续检查,并且代码将更具可读性。如果您使用的是Java 7,请使用此功能,否则,如果是Java 6或更低版本,请遵循@pstanton建议。 ; - )