2016-09-27 13 views
0

文字列を入力し、文字列が式であるかどうかを示す 'true'または 'false'を出力する関数を設計します。Java再帰式チェッカ

文字列が整形式であるかどうかを示すメッセージを表示します。最後に、すべての入力を処理した後、プログラムは終了メッセージを出力して停止します。ここ

.expr> = S | I(C)T(.exp>) 

が私のコードである:最初の文字が 's'が不十分であること、すべての条件の

import java.io.FileNotFoundException; 
import java.util.*; 
import java.util.Scanner; 

public class RecursionExpression { 


    public static void main(String[] args) throws FileNotFoundException{ 
     System.out.println("Enter the expression statement."); 
     Scanner keyboard = new Scanner(System.in); 
     String expr = keyboard.nextLine(); 
    } 
    public static boolean expression(String n) 
    { 
     if (n.charAt(0) == 's') 
     return true; 
     else if(n.length() >=6) 
     { 
      if (n.substring(0,5) == "I(C)T") 
       return expression(n.substring(6, n.length()-1)); 


     } 
     return false; 

    } 
} 
+0

を基本的には、ここにあなたの割り当てを落としました。あなたがそれを解決できないことを私たちに伝えます。しかし、あなたの質問は何ですか?私たちはあなたの宿題をしていますか?そのexpr定義の解釈方法を理解できない場合は、あなたの教師に明確化を求めることを検討しましたか? – GhostCat

+0

申し訳ありませんが、私は正しいコードを入れていませんでした。今更新する予定です。 –

答えて

1

まず(ルール、それに応じて 次のルールは整形式を定義します大文字の'S' BTW)。これは、空文字列の例外をスローすることさえできます。さらに、それはの文字列でsで始まり、"so you want this string to match too"を含みます。

さらに、.exp>の角括弧がチェックされていません。これも実行する必要があります。さらに、動作しません==で時定数をコンパイルされていませんString S(How do I compare strings in Java?を参照)を比較:

public static boolean expression(String n) { 
    return n.equals("S") || 
      (n.startsWith("I(C)T(") && n.endsWith(")") && expression(n.substring(6, n.length()-1))); 
}