2017-06-08 5 views
1

Ich bin gestolpert. Ich arbeite an einem Projekt für den Unterricht und für das Leben von mir kann ich nicht herausfinden, mehrere Arrays aus einer Textdatei zu erstellen. Ich habe herumgesucht, aber die meisten Methoden, die ich gelesen habe, sind unpräzise. Ich bin in der Lage, die Datei in ein Array erfolgreich zu beschaffen, aber versuchen, ein Array über hasNext und nextLine zu erstellen, gibt mir nur Null Daten. Irgendwelche Zeiger?Mehrere Arrays aus Textdatei

public static void main (String [] args) throws FileNotFoundException { 
    int count = 0; 
    double sum = 0; 
    String inputfile = "input.txt"; 
    File filename = new File (inputfile); 
    Scanner console = new Scanner(filename); 
    ArrayList<String> list = new ArrayList<String>(); 
    while (console.hasNext()) { 
     list.add(console.nextLine()); 
    } 

    Scanner user = new Scanner (System.in); 
    System.out.println("Please verify file before moving forward."); 
    String fileverify = user.nextLine(); 
    String line = ""; 

    if (fileverify.equals("input.txt")) { 
     System.out.println("File is available.\n"); 
    } 
    else { 
     System.out.println("Wrong file. Please try again."); 
     return; 
    } 
    System.out.println(list); 

    String[] studentNames = new String [count]; 
    int[]studentIDs = new int[count]; 
    double[]studentScores = new double[count]; 
    count++; 

    while(console.hasNext()){ 

     studentNames[count] = console.nextLine(); 
     studentIDs[count] = console.nextInt(); 
     studentScores[count] = console.nextDouble(); 

    } 

    System.out.println("Would you like to:\n" + 
         "\n1. Print average" + 
         "\n2. Print high score"+ 
         "\n3. Print low score"+ 
         "\n4. Print median"+ 
         "\n5. Print all student names and scores"+ 
         "\n6. Exit\n"); 
    String command = user.next(); 

    int nextInt = console.nextInt(); 
    if (user.equals("1")){ 
      count++; 
      sum = sum + console.nextInt(); 
      System.out.println("The average is : " + sum/count) ; 
    } 

}  

Textdatei sieht so aus.

Class size 37 
Leland Fitzgerald:83629:94.7 
Marilyn A. Stanley:91602:18.8 
Sergio Jones:24914:96.4 
Mona Hines:62909:30.6 
Brian Little:12713:17.7 
Iris Logan:84645:97.8 
Alonzo Strickland:2913:19.7 
Edith Richards:78585:53.9 
Marianne Wheeler:30544:77.0 
Viola Walton:76264:78.2 
Lyle Houston:7617:70.0 
Sheldon Jim Ford:53185:29.0 
Ivan Carlson:40732:84.5 
Aaron Ramsey:12392:71.3 
Katherine Townsend:30999:34.9 
Wilbert Vargas:76095:01.9 
Erick Gibson:47420:98.9 
Audrey Ward:32662:88.9 
Lynda Cain:48951:88.7 
Allison Patrick:72177:61.6 
Cecelia Griffith:14614:08.5 
Monique Mccoy:711:85.3 
Maureen Alvarado:14961:00.1 
Holly Morris:77959:26.5 
Justin Parks:48615:40.0 
Ellis Mcbride:26184:35.4 
Forrest Weber:12330:84.3 
Myron Blake:77705:78.7 
Bob Goodman:31072:77.9 
Jon Foster:12913:76.4 
Alexis Zimmerman:76866:24.2 
Melissa Warner:85395:70.8 
Rodolfo Moreno:32141:92.6 
Leah Maxwell:49734:39.5 
Sandy Carpenter:36441:43.5 
Kara Robertson:26797:88.8 
Shelly Casey:65599:67.6 
+0

Können Sie klären, welche Ausgabe Sie versuchen zu erhalten? Ist es ein Array von Zeilen, wobei jede Zeile ein Array der Wörter dieser Zeile ist? – Mureinik

+0

Versuchen Sie nicht, ein Array von Zeilen zu erhalten. Mehr noch, ich versuche nur, das Array (Textdatei) in den Compiler zu laden, damit ich die Daten so ausgeben kann, wie es im Code steht. – oto

Antwort

0

Ich hoffe, was Sie erreichen müssen, ist eine Datei dann zu lesen, fügen Sie jede Zeile einen ArrayList von String Art und spaltet jedes ArrayList Element zu drei verschiedenen Arrays und Daten manipulieren diese Arrays basieren, wenn das der Fall ist

  1. Führen Sie vor dem Lesen der Datei eine Dateiprüfung durch.

    String inputfile = "input.txt"; 
    File filename = new File (inputfile); 
    
    Scanner user = new Scanner (System.in); 
    System.out.println("Please verify file before moving forward."); 
    String fileverify = user.nextLine(); 
    
    if (fileverify.equals("input.txt")) { 
        System.out.println("File is available.\n"); 
    } 
    else { 
        System.out.println("Wrong file. Please try again."); 
        return; 
    } 
    
    Scanner console = new Scanner(filename); 
    ArrayList<String> list = new ArrayList<String>(); 
    while (console.hasNext()) { 
        list.add(console.nextLine()); 
    } 
    
  2. Declare-Arrays mit der gleichen Größe Ihrer Liste

    String[] studentNames = new String [list.size()]; 
    int[] studentIDs = new int[list.size()]; 
    double[] studentScores = new double[list.size()]; 
    

Ich werde dies nicht empfehlen, denn manchmal kann die Liste eine Größe hat, dass Array nicht akzeptieren.

  1. Iterate die ArrayList auf Elemente in der Array

    for(String line : list) { 
    
        String[] lineSplitArray = line.split(":"); 
        studentNames[count] = lineSplitArray[0]; 
        studentIDs[count] = Integer.parseInt(lineSplitArray[1]); 
        studentScores[count] = Double.parseDouble(lineSplitArray[2]); 
        count++; 
    } 
    

die alles obige Erklärung erfolgt auf der Grundlage meiner Annahme über Ihr Problem. Entschuldigung, wenn ich falsch liege.

+0

Es scheint, dass Sie die Overhead-Informationen (die erste Zeile der Info) nicht behandelt haben. – Sedrick

+0

Das hat für mich funktioniert! Entschuldigung für die verspätete Antwort. – oto

Verwandte Themen