2016-07-25 3 views
-3
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 [я] = st.nextToken().нанизывать();

Помогите мне определить и понять проблему?

+1

И эта ошибка ...? –

+0

Вы получили что-то вроде 'java.lang.FooException в foo.bar.baz() в bar.foobar() в foo.bar.qux()'? – dorukayhan

+0

Для начала инициализируйте массив ('elems') с помощью' st.countTokens() 'вместо' e.length() '. 'st.nextToken(). toString()' избыточно, вместо этого используйте 'st.nextToken()'. Также необходимо соответствующим образом изменить петли. –

ответ

4

Правильный вариант:

String[] elems = e.split(","); 
for(String elem : elems) { 
    System.out.println(elem); 
} 

Ошибки вы сделали то, что e.length() возвращает размер string (его количества символов), так что вы в конечном итоге вызова более st.nextToken() раз, чем Есть фактические жетоны разделенных ",". Отсюда исключение.

+0

плохо попробуйте это спасибо, и если вы не возражаете, можете ли вы сказать мне, что я сделал не так? – 7Kei

+0

Понял спасибо – 7Kei

0

@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() который не существует.

Документы:

Возвращает следующий маркер из этой строки Tokenizer.
Throws: NoSuchElementException - если в этой строке нет токенов.

Чтобы исправить вашу проблему использовать длину countTokens()

ИЛИ

while(st.hasMoreElements()){ 
    elems[i] = st.nextToken().toString(); 
} 
0

Другой альтернативный.

String[] elems = e.split(","); 

    System.out.print(Arrays.toString(elems)); 
Смежные вопросы