要打印出数组中的Java
问题描述:
System.out.println("Please input the elements and seperate each by a comma.");
e = dk.nextLine();
String[] elems = new String[e.length()];
st = new StringTokenizer(e,",");
for (int i = 0; i<e.length(); i++) {
elems[i] = st.nextToken().toString();
}
for (int i=0; i<e.length(); i++){
System.out.println(elems[i]);
}
我试图打印出数组elems[]
但它不会工作的错误java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(StringTokenizer.java:349
似乎是行:要打印出数组中的Java
elems的[I] = st.nextToken ()的ToString();
你能帮我识别和理解问题吗?
答
@Jean张贴你想什么,但最终帮助理解的错误
e = dk.nextLine(); // input: Alfredo,Bauer,Cisco
String[] elems = new String[e.length()]; // length is 20
st = new StringTokenizer(e,","); // st has a length of 3
现在,如果你这样称呼它
for(int i = 0;i<e.length();i++){
elems[i] = st.nextToken().toString(); // NoSuchElementException
}
因为你试图调用一个精简版本,不存在的nextToken()。
文档:
返回此string tokenizer的下一个标记。
抛出: NoSuchElementException - 如果在此标记器的字符串中没有其他标记。
解决您的问题使用的countTokens()
OR
while(st.hasMoreElements()){
elems[i] = st.nextToken().toString();
}
答
另一种选择长度。
String[] elems = e.split(",");
System.out.print(Arrays.toString(elems));
而这个错误是......? –
您是否在foo.bar.baz()处得到类似java.lang.FooException的东西?在bar.foobar()处的foo.bar.qux()'? – dorukayhan
对于初学者,用'st.countTokens()'而不是'e.length()'初始化数组(elems')。 'st.nextToken()。toString()'是多余的,用'st.nextToken()'代替。循环也必须相应地改变。 –