2009-04-30 7 views
0

Est-ce que quelqu'un sait pourquoi mon nextLine() ne fonctionne pas après une boucle for dans le code suivant? Il saute toujours le nextLine() et va directement à l'instruction if.nextLine() ne fonctionne pas après une boucle for

int[] a = new int[3] 

for(int i=0; i<3;i++) 
{ 
    a[i] = nextInt(); 
} 

String b = nextLine(); 

if(b == "go") 
{ 
    ....... 
} 
else 
{ 
    ..... 
} 
+0

Je ne vois aucune raison pour que cela se produise, aurait besoin de plus de détails. Êtes-vous sûr que le code que vous utilisez est le même que celui que vous nous avez montré? –

Répondre

0

Que voulez-vous dire par ne pas travailler? Vous voulez dire que la méthode nextLine() n'est pas appelée. Selon le code que vous avez collé, 100% appellera la méthode nextLine().

0

L'instruction impliquant nextLine doit toujours être exécutée ici (sauf si une exception est levée). Vous ne montrez pas l'implémentation pour nextLine. Êtes-vous sûr que ce n'est pas exécuté? Quelques System.err.println("blah") dispersés pourraient aider. Btw: la comparaison de chaînes devrait presque certainement être b.equals("go")

Si b peut être null soit vérifier explicitement pour cela ou écrire l'expression "go".equals(b).

3

Je devine que peut-être ce que vous faites demande à l'utilisateur d'entrer les entiers, puis appuyez sur Entrée. Quand il analyse les entiers, il ne fait qu'analyser et enlever les entiers. Mais bien sûr, la nouvelle ligne qu'ils ont pressée est toujours dans le flux. Et puis quand vous demandez nextLine(), il retourne immédiatement parce qu'il y a déjà une ligne dans le flux (celle qui se termine dans le retour à la ligne qui a été pressé pour les entiers). Et peut-être que vous vous attendiez à ce que le nextLine() attende une ligne supplémentaire après que les entiers aient été entrés, mais ce n'est pas ce qui se passe. Est-ce correct?

Questions connexes