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]が と等しいかどうかをチェックしていません)

equalsメソッドを使用します。次に、次を使用して文字列を比較できます。

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

equals他のifステートメントに置き換えます。

アップデート

PS私は、コードを見て文字列を比較する最良の方法は、switch/caseステートメントを使用することだと思います。ただし、この機能はJava 7 でのみ使用できますifこれにより、ステートメントによる継続的なチェックが回避され、コードが読みやすくなると思います。Java 7 を使用している場合は、この機能を使用してください。Java 6 以下の場合は、@pstanton の提案に従ってください。;-)

于 2012-05-11T10:23:55.913 に答える