2017-03-15 1 views
-1

Wie können Sie in Java nur Daten aus einer Datei lesen und die davor liegenden Zeichenfolgen ignorieren? Bitte, Leute, ich habe viel recherchiert, aber ich konnte es nicht finden.Wie lese ich nur Daten aus einer Datei (String ignorieren)?

Hier ein Beispiel Text-Datei:

number of courses:3 
course numbers:219 214 114 
arrival Probabilities:0.4 0.6 0.8 
min time:2 
max time: 4 
num cups:1 
simulation time:50 
number of tas:2 

Nun, wie Sie Jungs sehen können, ich die Zahlen nur lesen wollen.

Mein aktueller Code ist die folgende, aber ich laufe in ein InputMismatchException wegen offensichtlichen Gründen (es liest Zeichenfolge zuerst statt integer):

//Read file 
     while(input.hasNext()){ 
      //Read Number of Courses 

      numCourses = input.nextInt(); 
      courseNumbers = new int[numCourses]; //Initialize the size of courseNumbers array. 
      arrivalProbability = new double[numCourses]; //Initialize the size arrivalProbability array. 

      //Read the CourseNumbers, numCourses times. 
      for(int i = 0; i < numCourses; i++){ 
       courseNumbers[i] = input.nextInt(); 

      } 

      //Read the arrivalProbability, numCourses times. 
      for(int i = 0; i < numCourses; i++){ 
       arrivalProbability[i] = input.nextDouble(); 

      } 

      //Read minTime 
      minTime = input.nextInt(); 

      //Read maxTime 
      maxTime = input.nextInt(); 

      //Read number of Coffee cups 
      numCups = input.nextInt(); 

      //Read simulation time 
      officeHrTime = input.nextInt(); 

      //Read the number of TAs 
      numTAs = input.nextInt(); 
     } 

Vielen Dank für Ihre Hilfe im Voraus!

+1

Sind Sie garantiert, ':' (Doppelpunkt) vor jeder Zahl? –

+0

müssen Sie die Zeichenfolgen lesen und sie verwerfen –

Antwort

1

Ich würde es tun, wie folgt:

  • lesen eine Linie
  • die Linie analysieren, bestimmen, welcher Teil das Etikett ist und welcher Teil sind die Daten
  • das Label verwenden, um festzustellen, wie zu speichern, Die Daten

Verwenden Sie nicht nextInt, verwenden Sie nextLine. Sie müssten viel mehr Fehler überprüfen, als ich hier aufgenommen habe, aber ich würde es so etwas tun:

int numCourses; 
int[] courseNumbers; // I would use a list here, but sticking with your data types for clarity. 

while(input.hasNextLine()) { 
    String line = input.nextLine(); 
    String[] lineParts = line.split(":"); 
    String label = lineParts[0]; 
    String value = lineParts[1]; 

    if(label.equals("number of courses")) { 
     numCourses = Integer.parseInt(value); 
    } else if(label.equals("course numbers")) { 
     String[] courseNumberStr = value.split(" "); 
     courseNumbers = new int[numCourses]; // you probably want to make sure numCourses was set and courseNumStr has the correct number of elements 
     for(int i = 0; i < courseNumberStr.length; i++) { 
      courseNumbers[i] = Integer.parseInt(courseNumberStr[i]); 
     } 
    } else if(/* handle the rest of the inputs */) { 
     // etc 
    } 
+0

Vielen Dank! –

Verwandte Themen