I have an input that looks like: (0 0 0)
transitionInput = d开发者_运维问答ata.nextLine();
st = new StringTokenizer(transitionInput,"()", true);
while (st.hasMoreTokens())
{
transition.add(st.nextToken(","));
}
However, the output looks like this [(0 0 0)]
How about
for(String number: transitionInput
.replace('(', ' ').replace(')', ' ').split("\\s+")){
transition.add(number);
}
You are first using () as delimiters, then switching to ,, but you are switching before extracting the first token (the text between parentheses).
What you probably intended to do is this:
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());
}
}
This code assumes that the expression always starts and ends with parentheses. If this is the case, you may as well remove them manually using String.substring(). Also, you may want to consider using String.split() to do the actual splitting:
String transitionInput = data.nextLine();
transitionInput = transitionInput.substring(1, transitionInput.length() - 1);
for (String s : transitionInput.split(","))
transition.add(s);
Note that both examples assume that commas are used as separators, as in your sample code (although the text of your question says otherwise)
Another variant
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);
}
}
Output : [0, 0, 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);
}
}
加载中,请稍侯......
精彩评论