0

我正在尝试构建一个在使用 Split 函数后读取某个字符串的程序

import 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
4

2 回答 2

4

你非常接近,只需替换(s[i] == "?")(s[i].equals("?"))

于 2012-05-11T10:16:39.240 回答
1

不要s[i] == ")"用来比较字符串。这样,您就不会检查字符串 ins[i]是否等于).

使用等号方法。然后您可以使用以下方法比较字符串:

if (s[i].equals("("))

equals在其他if语句中替换。

更新

PS我认为比较字符串的最佳方法,查看您的代码,是使用switch/case语句。但是,此功能仅在 Java 7 中可用。我认为这样可以避免不断检查if语句,并且代码更具可读性。如果您有 Java 7,请使用此功能,否则,对于 Java 6 或更低版本,请遵循 @pstanton 的建议。;-)

于 2012-05-11T10:23:55.913 回答