2017-10-04 4 views
-3

Salut je veux remplir un tableau avec des valeurs d'un fichier txt, mais j'ai l'erreur java.util.NoSuchElementException: No line found lors de l'exécution du programme, c'est mon code.Remplir un tableau int avec un txt java

private static void leeArchivo() 
{ 
    Scanner s = new Scanner(System.in); 
    //Size of the array 
    int size = Integer.parseInt(s.nextLine()); 
    datos = new int[size]; 
    while (s.hasNextLine()) { 
     for (int i = 0; i < size; i++) { 
      //fill array with values 
      datos[i] = Integer.parseInt(s.nextLine()); 
     } 
    } 
} 

Le txt ressemblerait à ceci, la première ligne est la taille du tableau:

4 

75 

62 

32 

55 
+2

Mais ici, vous ne lisez pas un fichier. Vous lisez l'entrée de l'utilisateur à la place. –

+0

autant que je sache, vous pouvez utiliser le scanner pour entrer un fichier txt, non seulement le lecteur tamponné –

+1

Oui, mais ce n'est pas ce que vous faites ici. Donc, le code qui cause votre erreur est différent de celui que vous avez posté. –

Répondre

1

Ayant à la fois une boucle while et une boucle for semble être la cause de votre problème. Si vous êtes sûr que votre entrée est correcte, c.-à-d. le nombre de lignes correspond au premier numéro, vous pouvez faire quelque chose comme ceci:

private static void leeArchivo() 
{ 
    Scanner s = new Scanner(System.in); 

    //Size of the array 
    int size = Integer.parseInt(s.nextLine()); 
    datos = new int[size]; 

    for (int i = 0; i < size; i++) { 
     //fill array with values 
     datos[i] = Integer.parseInt(s.nextLine()); 
    } 
} 

Dans le code ci-dessus, il n'y a pas de test pour hasNextLine() car il n'est pas nécessaire parce que nous savons il y a une ligne suivante. Si vous voulez jouer en toute sécurité, utilisez quelque chose comme ceci:

private static void leeArchivo() 
{ 
    Scanner s = new Scanner(System.in); 

    //Size of the array 
    int size = Integer.parseInt(s.nextLine()); 
    datos = new int[size]; 

    int i = 0; 
    while ((i < size) && s.hasNextLine()) { 
     //fill array with values 
     datos[i] = Integer.parseInt(s.nextLine()); 
     i++; 
    } 
}