1

我有一个看起来像这样的输入:(0 0 0)
我想忽略括号,只将数字(在本例中为 0)添加到数组列表中。
我正在使用扫描仪从文件中读取数据,这就是我目前所拥有的

    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);
 }
}

输出:[0, 0, 0]

于 2010-10-23T09:25:10.957 回答
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 回答