Fondamentalement, je devais créer un scanner pour un fichier donné et lire via le fichier (le nom est entré via le terminal par l'utilisateur) en comptant le nombre de lignes dans le fichier. Ensuite, après, j'ai dû créer un tableau d'objets du fichier, de la bonne taille (où le nombre de lignes est entré). Ensuite, je devais créer un autre scanner pour le fichier et la lire à nouveau, le stockant dans la matrice que j'ai créée. Et enfin, je devais retourner le tableau dans la méthode.
Mon problème est que je ne peux pas sembler obtenir le deuxième scanner pour stocker réellement les objets de fichier dans le tableau. p>
J'ai essayé d'utiliser .nextline code> à l'intérieur d'une boucle pour la boucle qui appelle également la matrice, mais cela ne semble pas fonctionner. P>
public static Data[] getData(String filename) {
Scanner input = new Scanner(new File(filename));
int count = 0;
while (input.hasNextLine()) {
input.nextLine();
count++;
}
System.out.println(count);
Data[] data = new Data[count];
Scanner input1 = new Scanner(new File(filename));
while (input1.hasNextLine()) {
for (int i = 0; i < count; i++) {
System.out.println(data[i].nextLine);
}
}
return data;
}
4 Réponses :
pas clair quelles data.class voulez-vous dire que si vous le permettez de la chaîne, le problème serait évidemment dans cette ligne si vous souhaitez affecter et imprimer simultanément, écrivez cette < / p> et n'oubliez pas de fermer vos scanners, meilleure utilisation try-with-with-ressources code>.
Si vos données sont votre classe personnalisée, vous feriez mieux d'apprendre sur
sérialisement-désériorialisation code>
Ou utilisez un objet MapsPer-S (Jackson, par exemple) pour stocker vos instances de classe et les restaurer. P> P>
Votre moyen d'ouvrir le fichier juste pour compter les lignes, puis à nouveau en boucle à travers ses lignes pour les stocker dans la matrice n'est pas si efficace, mais cela pourrait être juste une mission d'école. après la 1ère boucle, vous devez fermer le scanner code> CODE> et le réouvoir afin de démarrer partout dans la première ligne du fichier. P> p>
Essayez ceci:
Ouais, Data [] est une classe distincte où elle appelle les paramètres du fichier d'entrée et fait beaucoup de calculs et de manipulations différents du fichier de réseau / données. L'en-tête de méthode de la classe de données est la suivante: Données publiques (Nom de la chaîne, Double Wage, Int Revenu) {
Alors pourquoi ne l'avez-vous pas posté dans votre question? Comment l'initialisation de chaque article serait-elle effectuée?
Vous devez absolument utiliser une IDE si vous n'en avez pas un, essayez Intellij ... vous avez une vérification automatique et une vérification de la syntaxe et beaucoup plus.
Ce n'est pas clair ce que vous voulez faire dans votre boucle, Parce qu'il y a plusieurs erreurs, par exemple la fonction Donc, je vous montre simplement comment vous pouvez obtenir les données d'un fichier avec scanner: p> readline () code> fonctionne uniquement avec le scanner objekt, de sorte que vous pouvez faire
entrée.nextline () code> ou entrée1.nextline () ... p>
Vous n'avez pas besoin de lire à deux reprises le fichier - utilisez simplement une arracheListe pour contenir les données qui arrivent dans le fichier, comme ceci, puis renvoyez les données [] à la fin:
public static Data[] getData(String filename) { List<Data> result = new ArrayList<>(); try (Scanner input = new Scanner(new File(filename))){ while (input.hasNextLine()) { Data data = new Data(input.nextLine()); result.add(data); } } return result.toArray(new Data[0]);
Pouvez-vous élaborer sur
'ne semble pas fonctionner' code>? Quelle sortie voyez-vous réellement?
Nous pourrions également utiliser le code source pour
data code>, à aucun moment, vous appelez l'une de ses méthodes.
Vous n'utilisez pas
INPUT1 code> après l'avoir ouvert. Si vous ne l'utilisez pas, vous ne pouvez pas lire. Et vous devez attribuer la chose que vous avez lu dans
Data code> tableau. Vous n'en attribuez nulle part.
Il y a très peu de tentatives pour résoudre le problème ici. Comme mentionné, l'OP n'essaie même pas de lire le fichier ou d'appeler des méthodes sur le type de retour,
DATA CODE>. Pourquoi ce code ne fonctionne-t-il pas? n'est pas une vraie question.
Le but de cette méthode consiste essentiellement à stocker les données du fichier d'entrée dans un tableau. Et que voulez-vous dire par le code source pour les données? @markspace
J'ai essayé d'éditer le code et je me suis assuré que j'ai utilisé Input1 après l'avoir ouverte. Est-ce que ça a du sens maintenant? @Realskeptic
Vous venez d'ajouter un chèque s'il y a une autre ligne (qui est une bonne chose), mais où utilisez-vous pour Lire une ligne B>?