2016-07-25 1 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]); 
} 

Je suis en train d'imprimer le tableau elems[] mais il ne fonctionnera pas l'erreur java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(StringTokenizer.java:349 semble être à la ligne:essayant d'imprimer le tableau en Java

elems [i] = st.nextToken() .toString();

pouvez-vous m'aider à identifier et à comprendre le problème?

+1

Et cette erreur est ...? –

+0

Avez-vous obtenu quelque chose comme 'java.lang.FooException à foo.bar.baz() sur bar.foobar() à foo.bar.qux()'? – dorukayhan

+0

Pour commencer, initialisez le tableau ('elems') avec' st.countTokens() 'au lieu de' e.length() '. 'st.nextToken(). toString()' est redondant, utilisez 'st.nextToken()' à la place. Les boucles doivent également être changées en conséquence. –

Répondre

4

Une version correcte:

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

L'erreur que vous avez fait est que e.length() retourne la taille du string (le nombre de caractères) pour que vous a fini par appeler st.nextToken() plus de fois qu'il y jetons réels séparés par ",". D'où l'exception.

+0

ill essayer s'il vous plaît et si cela ne vous dérange pas pouvez-vous me dire ce que j'ai mal fait? – 7Kei

+0

Compris merci – 7Kei

0

@Jean a publié une version mince de ce que vous essayez, mais en fin de compte pour aider à comprendre l'erreur

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 

Maintenant, si vous l'appelez comme ce

for(int i = 0;i<e.length();i++){ 
elems[i] = st.nextToken().toString(); // NoSuchElementException 
} 

Parce que vous essayez d'appeler le nextToken() qui n'existe pas.

Les docs:

Renvoie le jeton de cette chaîne tokenizer.
Lève: NoSuchElementException - s'il n'y a plus de jetons dans cette chaîne de tokenizer .

Pour résoudre votre problème utilisez la longueur de countTokens()

OU

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

Une autre alternative.

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

    System.out.print(Arrays.toString(elems));