2010-11-26 7 views
0

J'ai une instruction switch agissant comme un menu, dans ce que j'essaie de lire l'entrée des utilisateurs. Actuellement, j'utilise variable=in.next(); et cela fonctionne. Cependant, il ne lira qu'un seul mot et aux points l'utilisateur devra peut-être entrer plus, alors j'ai essayé d'utiliser variable=in.nextLine();, qui compile, mais quand j'exécute le programme, je sélectionne mon choix dans le menu, et il saute la lecture et retourne au menu.Java - nextLine(); dans une instruction switch

Toute aide serait appréciée, merci :)

Répondre

1

utiliser Just:

name=in.nextLine(); 

et

String choice = in.nextLine(); 

Cela devrait être dans le constructeur, et en haut de RunApp. De cette façon, vous ne quittez pas la nouvelle ligne dans le tampon (où elle sera utilisée, par exemple, pour dp).

Vous devriez avoir:

dp=in.nextLine(); 

comme décrit dans votre question.

+0

J'ai toujours le même problème, à moins d'avoir mal compris votre réponse, c'est très probable puisque je n'ai pas programmé depuis très longtemps. –

+0

@Ben, je l'ai testé avec votre code. J'ai dû commenter les appels aux méthodes que vous n'avez pas inclus. Pouvez-vous poster votre code actuel (vous pouvez éditer la question et utiliser le bouton 101 pour le formatage)? –

+0

ne peut pas obtenir l'éditeur pour fonctionner correctement, j'espère que vous pouvez donner un sens à cela. J'ai mis 'dp = in.nextLine();' comme vous pouvez le voir mais c'est ce qui me donne l'erreur. –

1

Vous devez soit dépouiller le caractère de nouvelle ligne \n de l'entrée d'utilisateur ou d'assumer qu'il est là dans votre déclaration de commutateur.

Quasiment parce que vous avez décidé d'utiliser nextLine() l'entrée d'utilisateur à l'ordinateur ressemblera à ceci

f\n 

Il suffit donc de comparer les cordes en conséquence!

-1

Le sélecteur de commutateur peut être seulement entier, court, char ou enum. La chaîne ne peut pas être utilisée comme sélecteur de commutateur.

Si je vous ai bien compris, vous souhaitez contrôler votre flux en utilisant les mots saisis par l'utilisateur. Si vous avez une liste prédéfinie de mots que je vous suggère d'utiliser ENUM:

ENUM mots { start, stop, bip, }

maintenant utilisateur entre un bip mot. Vous pouvez dire:

Words command = Words.valueOf(); 
/// 
switch (command) { 
    case start: /* start something */ break; 
    case stop: /* stop something */ break; 
    case beep: /* beep!!! */ break; 
    default: throw new IllegalArgumentException("Unknown command " + command); 
} 
+0

Voir mon commentaire à la réponse de vic. Il ne compilerait pas. –

0

OK Je pense que je suis trop inepte à Java et que j'ai mal posé ma question. Lorsque je prends l'entrée des utilisateurs, il ne prend qu'un seul mot, je veux qu'il prenne tout ce qu'ils mettent fondamentalement, et quand j'utilise nextLine, cela saute simplement la lecture et me ramène à la sélection d'un choix.

+0

Comment avez-vous obtenu un lien simple vers un fichier dropbox? – javamonkey79

+0

faites un clic droit sur le fichier dans l'explorateur, dropbox, copier le lien public. une chance de l'aide avec le problème? : P –

Questions connexes