Comment faire pour déterminer la fin d'une ligne avec un Scanner?
J'ai un scanner dans mon programme qui lit dans les pièces du dossier et les formats de pour HTML. Quand je suis à la lecture de mon fichier, j'ai besoin de savoir comment faire le scanner sais que c'est à la fin d'une ligne et de commencer à écrire à la ligne suivante.
Voici la partie de mon code, laissez-moi savoir si j'ai oublié quelque chose :
//scanner object to read the input file
Scanner sc = new Scanner(file);
//filewriter object for writing to the output file
FileWriter fWrite = new FileWriter(outFile);
//Reads in the input file 1 word at a time and decides how to
////add it to the output file
while (sc.hasNext() == true)
{
String tempString = sc.next();
if (colorMap.containsKey(tempString) == true)
{
String word = tempString;
String color = colorMap.get(word);
String codeOut = colorize(word, color);
fWrite.write(codeOut + " ");
}
else
{
fWrite.write(tempString + " ");
}
}
//closes the files
reader.close();
fWrite.close();
sc.close();
J'ai découvert sc.nextLine()
, mais je ne sais toujours pas comment faire pour déterminer si je suis à la fin d'une ligne.
lorsque vous êtes à la fin de sc.hasNext() sera faux, n'est-ce pas?
Juste pour être clair, êtes-vous sûr que vous ne voulez pas savoir comment faire pour avoir un
Double Possible de Java arrêter la lecture après une ligne vide
Juste pour être clair, êtes-vous sûr que vous ne voulez pas savoir comment faire pour avoir un
FileWriter
de commencer à écrire à une autre ligne? À partir de votre post, il pourrait être pris de cette façon depuis le Scanner dispose de la fonctionnalité dont vous avez besoin.Double Possible de Java arrêter la lecture après une ligne vide
OriginalL'auteur Samuel French | 2012-02-08
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez utiliser uniquement les Scanner, vous devez créer un temp de la chaîne de l'instancier pour nextLine() de la grille de données (on en revient donc seulement la ligne, c'sauté) et un nouveau Scanner objet de la numérisation de la temp de la chaîne. De cette façon, vous êtes seulement en utilisant la ligne et de hasNext() ne retourne pas un faux positif (Il n'est pas vraiment un faux positif parce que c'est ce qu'il était censé faire, mais dans votre situation, il serait techniquement). Vous avez juste à garder nextLine()ing le premier scanner et de changer la temp de la chaîne et la deuxième scanner pour numériser chaque nouvelle ligne etc.
OriginalL'auteur Jon
Lignes sont généralement delimitted par
\n
ou\r
donc, si vous avez besoin de vérifier pour cela, vous pouvez essayer de le faire de cette façon, même si je ne suis pas sûr pourquoi vous voulez puisque vous êtes déjà à l'aide denextLine()
de lire une ligne entière.Il est
Scanner.hasNextLine()
si vous êtes inquiet au sujet dehasNext()
ne fonctionne pas pour votre cas particulier (je ne sais pas pourquoi il ne serait pas bien).OriginalL'auteur Ian Dallas
vous pouvez utiliser la méthode hasNextLine pour itérer le fichier ligne par ligne au lieu de mot par mot, puis séparer la ligne par des espaces et de faire vos opérations sur le mot
voici le même code à l'aide de hasNextLine et split
OriginalL'auteur Daniel Camarda
Wow j'ai été à l'aide de java pour les 10 ans et n'ont jamais entendu parler de scanner!
Il semble utiliser l'espace blanc délimiteurs par défaut, de sorte que vous ne pouvez pas dire quand une fin de ligne se produit.
Ressemble, vous pouvez modifier les séparateurs de le scanner - voir l'exemple à Scanner De Classe:
OriginalL'auteur davidfrancis