Ich habe eine Frage zu einem Code habe ichJava Scanner delimeter nicht wie ich mit der Arbeit erwartet
package salescities;
import java.io.File;
import java.util.Scanner;
public class SalesCities {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
double totalSales = 0;
int count = 0;
int missingCount = 0;
String line;
File file;
Scanner input;
try {
file = new File("sales.txt");
input = new Scanner(file);
input.useDelimiter(":");
while (input.hasNextLine()) {
input.next();
line = input.nextLine();
try{
totalSales += Double.parseDouble(line);
count++;
}
catch(IllegalArgumentException e){
missingCount++;
}
}
input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(totalSales + " " +missingCount);
}
geschrieben haben}
und die Datei im lesen versuchen, ist wie folgt
New York: 23.5678
New Jersey: no reports
Rio de Janeiro: 12.3654
Wenn ich das Programm aber es 0.0 3 druckt, wie alles fehlt. Das Problem ist, wenn ich den Debugger ausführen, um zu sehen, was geschieht, so die Linie parseDouble funktioniert nicht, und ich sah, dass Zeile eine Zeichenfolge, die diese
: 23.5678
hat, und ich verstehe nicht, warum, wenn ich mit ":" als Delimeter. Ich habe nur die Zahl ohne Doppelpunkt erwartet. Kann mir jemand antworten?
ps: Dies ist eine Übung aus einem Buch, das ziemlich einfach ist, aber das Buch verwendet eine Klasse TextIO, die von ihnen implementiert wird. wollte nur Scanner anstelle von ihrem Code versuchen.
Nicht wirklich eine Antwort, aber nur ein Hinweis: In diesem Fall könnte es einfacher sein, nur string.split (":") in den Zeilen zu verwenden. – Silverclaw