1

次のような入力があります。(0 0 0)
括弧を無視して、この場合は 0 の数字のみを arraylist に追加します。
ファイルから読み取るためにスキャナーを使用していますが、これは私がこれまでに持っているものです

    transitionInput = data.nextLine();
    st = new StringTokenizer(transitionInput,"()", true);
    while (st.hasMoreTokens())
    {
        transition.add(st.nextToken(","));
    }

ただし、出力は次のよう[(0 0 0)]
になります。括弧は無視したいと思います

4

4 に答える 4

3

どうですか

 for(String number: transitionInput
       .replace('(', ' ').replace(')', ' ').split("\\s+")){
    transition.add(number);
 }
于 2010-10-23T09:20:37.270 に答える
2

()最初に区切り文字として使用し、次に に切り替えて,いますが、最初のトークン (括弧内のテキスト) を抽出する前に切り替えています。

おそらくあなたが意図したのはこれです:

transitionInput = data.nextLine();
st = new StringTokenizer(transitionInput,"()", false);
if (st.hasMoreTokens())
{
    String chunk = st.nextToken();
    st = new StringTokenizer(chunk, ",");
    while (st.hasMoreTokens())
    {
        transition.add(st.nextToken());
    }
}

このコードは、式が常に括弧で始まり括弧で終わることを前提としています。この場合は、 を使用して手動で削除することもできますString.substring()String.split()また、実際の分割を行うために使用することを検討することもできます:

String transitionInput = data.nextLine();
transitionInput = transitionInput.substring(1, transitionInput.length() - 1);
for (String s : transitionInput.split(","))
    transition.add(s);

どちらの例も、サンプルコードのようにコンマが区切り記号として使用されていることを前提としていることに注意してください (ただし、質問のテキストには別の記載があります)。

于 2010-10-23T10:44:04.173 に答える
0
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;


public class simple {


 public static void main(String[] args)
 {

  List transition = new ArrayList();
     String transitionInput="(0 0 0)";
     transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+"));
     System.out.println(transition);
 }
}
于 2010-10-23T10:14:37.533 に答える
0

別のバリアント

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;


public class simple {


 public static void main(String[] args)
 {

  List transition = new ArrayList();
     String transitionInput="(0 0 0)";
     transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+"));
     System.out.println(transition);
 }
}

出力 : [0, 0, 0]

于 2010-10-23T09:25:10.957 に答える