Ich benutze Eclipse in Verbindung mit CPLEX, um ein Fahrzeug-Routing-Problem zu modellieren. Ich muss Daten (Bedarfspunktkoordinaten, Zeitfenster usw.) aus einer Textdatei lesen. Die Daten sind spaltenweise und so habe ich eine Split-Funktion verwendet, um meine Variablen darin zu speichern. Die Konsole zeigt jedoch einen Fehler in der ersten Zeile der Daten selbst an.Spalten-Daten aus einer Textdatei in Eclipse lesen
Code:
public class VRP01k {
public static void main(String args[]) throws FileNotFoundException{
//Scanner input = new Scanner(new File("C:\\OR Research\\Code\\data01.txt"));
Scanner input = new Scanner(new File("data01.txt"));
String line = input.nextLine();
while(line != null) {
String[] columns = line.split("\t");
xPos[count] = Double.parseDouble(columns[0]);
yPos[count] = Double.parseDouble(columns[1]);
d[count] = Double.parseDouble(columns[2]);
a[count] = Double.parseDouble(columns[3]);
b[count] = Double.parseDouble(columns[4]);
s[count] = Double.parseDouble(columns[5]);
count++;
line = input.nextLine();
}
ich aus dem C-Laufwerk mit der Datei versuchte, direkt und durch sie in mein Java-Projekt zu bewegen. Keine funktioniert. Der Fehler ist wie folgt:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3.00 38.00 0.00 0.00 1187.00 0.00"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at VRP01k.main(VRP01k.java:32)
Die ersten paar Zeilen der Datendatei sind:
3.00 38.00 0.00 0.00 1187.00 0.00
44.00 28.00 0.00 342.00 365.00 0.00
26.00 44.00 0.00 20.00 93.00 0.00
7.00 41.00 0.00 0.00 45.00 0.00
17.00 28.00 0.00 250.00 292.00 0.00
Bitte helfen. Vielen Dank.
Hier ist der neue Code:
public class VRP01k {
public static void main(String args[]) throws FileNotFoundException{
//Scanner input = new Scanner(new File("C:\\OR Research\\Code\\data01.txt"));
Scanner input = new Scanner(new File("data01.txt"));
String line = input.nextLine();
while(line != null) {
String [] columns = line.trim().split("\\s+");
xPos[count] = Double.parseDouble(columns[0]);
yPos[count] = Double.parseDouble(columns[1]);
d[count] = Double.parseDouble(columns[2]);
a[count] = Double.parseDouble(columns[3]);
b[count] = Double.parseDouble(columns[4]);
s[count] = Double.parseDouble(columns[5]);
count++;
line = input.nextLine();
}
Und der Fehler:
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at VRP01k.main(VRP01k.java:32)
Ihr Split funktioniert nicht - wahrscheinlich haben Sie keine Tabulatorzeichen zwischen den Nummern. –
Versuchen Sie, trimmen, ex 'Spalten [0] .trim() '. Und probiere 'columns [0] 'aus, ob der Split wirklich passiert ist. – Ravikumar
wahrscheinlich sind sie nur Leerzeichen .. überprüfen Sie das ... –