0

この String 形式 "X -> i" を String["X"] と String["i"] に解析しようとしばらく試みましたが、うまくいきませんでした。誰でも私を助けることができますか?

私はもう試した:

public String[] parse(){

     String s = "X -> i";

        String[] tokens = s.split(" -> ");

        for (String t : tokens)
          return new String myarray[] {t, t};
        return myarray[];

}

コンパイルされませんが、問題が論理的にどこにあるのかわかりません。

4

4 に答える 4

1
public String[] parse(){
    String s = "X -> i";
    String[] tokens = s.split(" -> ");
    return tokens;
}
于 2012-12-04T02:42:41.850 に答える
0

いくつかの「論理的な」問題があります。

  1. 2 つの return ステートメントがあり、ループ ロジックを区切る中括弧はありません。(必須ではありませんが、これは Java の規則であり、読みやすく、目に見えないバグの可能性を減らします。

    parse() {
        return new String myarray[] {t, t};
        return myarray[];
    }
    

    後者を削除します。

  2. var 名 'myarray' の使用は冗長です。配列 [] 宣言構文を維持して削除してください。

  3. メソッドを使用しています。

    メソッドから変数を抽出する方が良いでしょう。

    public static String[] parse(String toParse) {
        return toParse.split(" -> ");
    }
    

間違いから、トークンを実際にどの形式で返してほしいか不明のように見えますか? split メソッドによって作成されたトークンの実際の配列が必要でしたか? または、2 つのアレイが必要でしたか。後者のクレイジーなコードを次に示します。

public String[][] parse(String toParse) {

    // String s = "X -> i";
    String[] tokens = toParse.split(" -> ");
    String[][] temp = new String[tokens.length][];

    int i = 0;
    for (String t : tokens) {
         temp[i++] = new String[] { t, t };
    }
    return temp;
}
于 2012-12-04T03:07:41.933 に答える
0

それよりもはるかに簡単です

public String[] parse(){

    String s = "X -> i";

    String[] tokens = s.split(" -> ");

    return tokens;
}
于 2012-12-04T02:40:57.647 に答える
0

コンパイル エラーは、return ステートメントが 2 つあるために発生します。必要なのは 1 つだけです。このエラー(あなたが尋ねたもの)を修正したら、他の回答を考慮する必要があります。

于 2012-12-04T02:42:21.533 に答える