1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Frage zu Source Code

  • 0326640
  • 3. Dezember 2009 um 13:57
  • Unerledigt
  • 0326640
    3
    0326640
    Mitglied
    Punkte
    95
    Beiträge
    12
    • 3. Dezember 2009 um 13:57
    • #1

    Hallo,

    habe ein problem mit einem Java Programmierbeispiel. Es geht prinzipiell darum, aus einem File abgespeicherte Daten (Start- und Stopzeiten) auszulesen und daraus Rundenzeiten zu berechnen. Nun bekomme ich beim Versuch des Kompilierens meines Quellcodes immer diese Fehlermeldung:

    "Exception in thread "main" java.lang.NumberFormatException: For input string: "1.259752712926E12" - (dieser String ist der Wert der ersten Zeile meines eingelesenen Files).

    Der Source Code lautet folgendermaßen:

    import java.util.ArrayList;
    import java.util.StringTokenizer;
    import java.util.*;
    import java.io.*;
    /**
    *
    * @author Sicknick
    */
    public class timeStop {
    long laptime;
    int lap;
    String filepath="lapsRecord.txt";

    timeStop (int lap) throws IOException{
    this.lap=lap;
    this.laptime=rundenzeit();
    }

    public long rundenzeit() throws IOException{

    FileReader fr = new FileReader(filepath);

    BufferedReader br= new BufferedReader(fr);

    Scanner sc = new Scanner(br);

    String daten=sc.nextLine();

    String [] datensplit=daten.split("[|\n]");

    long startzeit=Long.parseLong(datensplit [(lap-1)*2]);
    long stopzeit=Long.parseLong(datensplit [lap+lap]);

    laptime=stopzeit-startzeit;

    fr.close();

    br.close();

    return laptime;


    }
    }


    In der main Methode lässt sich dann problemlos eine Instanz der Klasse timeStop bilden, beim Versuch die Methode mit der erzeugten Instanz zu starten stellt sich dann aber ein Laufzeitfehler ein. Kann mir vielleicht wer sagen, ob dieser Code syntaktisch komplett falsch ist oder ob der Hund irgendwo im Detail begraben liegt? Bin leider noch absoluter Java-Laie und kenn mich insbesondere mit Exceptions noch nicht wirklich gut aus, wäre also für jedes Feedback sehr dankbar!!!

    cheers,
    alex

  • Paulchen
    1
    Paulchen
    Gast
    • 3. Dezember 2009 um 14:08
    • #2
    Zitat von 0326640

    "Exception in thread "main" java.lang.NumberFormatException: For input string: "1.259752712926E12" - (dieser String ist der Wert der ersten Zeile meines eingelesenen Files).

    Naja, das ist grundsätzlich so kein Long, sondern eine Zahl in Exponentialschreibweise. Wenn das ein UNIX-Timestamp mit Millisekunden ist (wäre 2.12.2009, 12:18:32 MEZ), dann hau den Punkt und das "E12" raus. Mit dem, was du dann bekommst, fütterst du Long.parseLong().

    Wenn das was anderes ist, dann musst du die Eingabe entsprechend umformen, sodass Long.parseLong oder Float.parseFloat (wenn du eine Gleitkommazahl brauchst) damit zurechtkommen.

  • 0326640
    3
    0326640
    Mitglied
    Punkte
    95
    Beiträge
    12
    • 3. Dezember 2009 um 14:47
    • #3
    Zitat von Paulchen

    Naja, das ist grundsätzlich so kein Long, sondern eine Zahl in Exponentialschreibweise. Wenn das ein UNIX-Timestamp mit Millisekunden ist (wäre 2.12.2009, 12:18:32 MEZ), dann hau den Punkt und das "E12" raus. Mit dem, was du dann bekommst, fütterst du Long.parseLong().

    Wenn das was anderes ist, dann musst du die Eingabe entsprechend umformen, sodass Long.parseLong oder Float.parseFloat (wenn du eine Gleitkommazahl brauchst) damit zurechtkommen.


    cool, danke für die rasche auskunft!!! hast du vielleicht auch noch einen tip, mit welchem befehl ich den Punkt und "E12" dynamisch am besten raushau? Ist die replaceAll()-Methode dafür geeignet oder eher weniger?

  • Paulchen
    1
    Paulchen
    Gast
    • 3. Dezember 2009 um 18:45
    • #4
    Zitat von 0326640

    Ist die replaceAll()-Methode dafür geeignet oder eher weniger?

    Ja, kannst du verwenden, musst aber beachten, dass String.replaceAll() als erstes Argument eine Regular Expression verwendet und der Punkt dort eine spezielle Bedeutung hat.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung