Je veux obtenir une entrée de stdin dans le for de
3
10 20 30
le premier nombre est le nombre de nombres sur la deuxième ligne. Voici ce que j'ai, mais il est coincé dans la boucle while ... donc je crois. J'ai couru en mode débogage et le tableau n'obtient aucune valeur ...
import Java.util.*;
public class Tester {
public static void main (String[] args)
{
int testNum;
int[] testCases;
Scanner in = new Scanner(System.in);
System.out.println("Enter test number");
testNum = in.nextInt();
testCases = new int[testNum];
int i = 0;
while(in.hasNextInt()) {
testCases[i] = in.nextInt();
i++;
}
for(Integer t : testCases) {
if(t != null)
System.out.println(t.toString());
}
}
}
Cela a à voir avec la condition.
in.hasNextInt()
Il vous permet de continuer à boucler, puis après trois itérations, la valeur "i" est égale à 4 et testCases [4] lève ArrayIndexOutOfBoundException.
La solution pour ce faire pourrait être
for (int i = 0; i < testNum; i++) {
*//do something*
}
Mettez à jour votre temps pour lire uniquement les chiffres souhaités comme ci-dessous:
while(i < testNum && in.hasNextInt()) {
La condition supplémentaire && i < testNum
ajouté dans while
arrêtera la lecture des nombres une fois que vous aurez lu les nombres équivalents à la taille de votre tableau, sinon il restera indéfini et vous obtiendrez ArrayIndexOutOfBoundException
lorsque le numéro de tableau testCases
est plein, c'est-à-dire que vous avez fini de lire avec testNum
nombres.