2012-04-06 13 views
2
import java.io.*; 
    import java.util.*; 

    public class Readfilm { 

    public static void main(String[] args) throws IOException { 

     ArrayList films = new ArrayList(); 
     File file = new File("filmList.txt"); 
     try { 
      Scanner scanner = new Scanner(file); 

      while (scanner.hasNext()) 
      { 
       String filmName = scanner.next(); 
       System.out.println(filmName); 
      } 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
    }} 

Oben ist der Code, den ich zur Zeit zu verwenden ist versucht, es kompiliert fein, dann bekomme ich einen Laufzeitfehler aus:Java Lesen aus der Datei zu Array-Laufzeitfehler

java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Scanner.java:907) 
    at java.util.Scanner.next(Scanner.java:1416) 
    at Readfilm.main(Readfilm.java:15) 

ich gegoogelt habe Fehler und nichts hat geholfen, die (ich gegoogelt nur die ersten drei Zeilen des Fehlers)

Grundsätzlich ist das Programm, ich schreibe einen Teil eines größeren Programms. Dieser Teil ist es, Informationen aus einer Textdatei zu erhalten, die wie folgt geschrieben wird:

Film einer/1,5
Film zwei/1.3
Film Drei/2.1
Film Four/4.0

mit dem Text Wesen der Filmtitel, und der Float ist die Dauer des Films (die 20 Minuten hinzugefügt haben wird (Für Anzeigen) und wird dann auf den nächsten Int aufgerundet)

Weitergeht, ist das Programm dann zu setzen die Informationen in einem Array, so dass es zugegriffen werden kann & modifie d einfach aus dem Programm, und dann zurück in die Datei geschrieben.

Meine Fragen sind:

ich zur Zeit einen Laufzeitfehler erhalten, keine Ahnung, wie sie zu beheben? (Im Moment versuche ich nur jede Zeile zu lesen und sie in einem Array zu speichern, als Basis für den Rest des Programms.) Kann mir jemand in die richtige Richtung zeigen?

Ich habe keine Ahnung, wie man eine Spaltung haben, unter „/“ Ich denke, es ist so etwas wie .split ist („/“)?

Jede Hilfe würde sehr geschätzt werden!

Zack.

+1

Ihr Code funktioniert gut für mich. Ich bekomme keine 'NoSuchElementException', und ich sehe nicht, wie Ihr Code einen generiert haben könnte. –

Antwort

1

Ihr Code funktioniert, aber es liest nur eine Zeile .Sie können BufferedReader verwenden hier ist ein Beispiel

import java.io.*; 
class FileRead 
{ 
public static void main(String args[]) 
    { 
    try{ 
    // Open the file that is the first 
    // command line parameter 
    FileInputStream fstream = new FileInputStream("textfile.txt"); 
    // Get the object of DataInputStream 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String strLine; 
    //Read File Line By Line 
    while ((strLine = br.readLine()) != null) { 
    // Print the content on the console 
    System.out.println (strLine); 
    } 
    //Close the input stream 
    in.close(); 
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 
    } 
}

Und hier ist ein Split Beispiel

class StringSplitExample { 
     public static void main(String[] args) { 
       String st = "Hello_World"; 
       String str[] = st.split("_"); 
       for (int i = 0; i < str.length; i++) { 
         System.out.println(str[i]); 
       } 
     } 
}

1

ich Scanner nicht verwenden würde, das ist für Tokenisieren (Sie erhalten jeweils ein Wort oder ein Symbol). Sie wollen wahrscheinlich nur eine BufferedReader verwenden, die eine readLine Methode hat, dann line.split("/") verwenden, wie Sie es in zwei Teile zu spalten vorschlagen.

0

faule Lösung:

Scanner scan = ..;
scan.nextLine();