Vous ne lisez pas à partir d'un fichier. Vous lisez la chaîne "text.txt". Vous avez besoin d'un fichier en premier.
Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException!
readFile.useDelimiter(":|\\n");
while (fileScanner.hasNext()) {
String name = readFile.next();
double value = readFile.nextDouble();
System.out.println(name + " " + value);
}
Je pris le code de votre commentaire et formaté, et je reçois ce
public class MyProject {
class FileInput {
Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException!
readFile.useDelimiter(":|\\n");
while (fileScanner.hasNext()) {
String name = readFile.next();
double value = readFile.nextDouble();
System.out.println(name + " " + value);
}
}
}
Maintenant, vous semblez avoir un problème - peut-être que vous vouliez dire class FileInput
être public void fileInput() throws Exception
? Quand je fais cela, il compile. Maintenant, nous avons besoin d'une méthode main()
pour l'exécuter! Donc, j'ajoute ceci:
public static void main(String[] args) throws Exception {
MyProject proj = new MyProject();
proj.fileInput();
}
Maintenant que je l'ai exécuté, j'ai eu une erreur. Cela signifie qu'il y avait effectivement un problème dans le code que je vous ai donné pour commencer. Bien sûr, ce code n'a jamais été conçu pour être copié-collé, mais plutôt pour donner une idée de la capacité. Quoi qu'il en soit, l'erreur est:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextDouble(Scanner.java:2387)
at MyProject.fileInput(MyProject.java:9) <--- Where it happened in our code
at MyProject.main(MyProject.java:16)
La ligne où cela s'est passé était sur la parseDouble. Alors, essayons plutôt de le faire différemment. Nous pouvons obtenir la double comme un morceau brut de texte, puis l'analyser dans un deux réel comme celui-ci:
while (readFile.hasNext()) {
String name = readFile.next();
String valueStr = readFile.next();
double value = Double.parseDouble(valueStr);
System.out.println(name + " " + value);
}
Ainsi, l'ensemble du programme complété est:
import java.util.*;
import java.io.*;
public class MyProject {
public void fileInput() throws Exception {
Scanner readFile = new Scanner(new File("text.txt")); // don't forget to catch FileNotFoundException!
readFile.useDelimiter(":|\\n");
while (readFile.hasNext()) {
String name = readFile.next();
String valueStr = readFile.next();
double value = Double.parseDouble(valueStr);
System.out.println("Name: " + name);
System.out.println("Value: " + value);
System.out.println(""); // blank line
}
}
public static void main(String[] args) throws Exception {
MyProject proj = new MyProject();
proj.fileInput();
}
Donc, pour le texte du fichier d'entrée étant:
this:1234.5
that:321.0
the other:0.122
La sortie est
C:\Documents and Settings\glowcoder\My Documents>java MyProject
Name: this
Value: 1234.5
Name: that
Value: 321.0
Name: the other
Value: 0.122
C:\Documents and Settings\glowcoder\My Documents>java MyProject
}
Wh à veux-tu dire par "ça ne marche pas"? (Du point de vue de ce que vous n'essayez pas de lire dans les doubles.) – Jeremy
Il dit qu'il ne peut pas trouver le paquet readFile. Et je ne sais pas comment l'obtenir pour lire les doubles. – James
Avez-vous vu ça? http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html – Jeremy