tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1074
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    joez joez ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Beiträge
    3
    hallo!
    ich muss in java eine zeitreihe implementieren, und zwar müsste ich zunächst eine .txt - datei nach folgendem schema einlesen:
    jahr monat aktienkurs
    1998 06 8952.00
    1998 07 8883.30
    1998 08 7539.10
    1998 09 7842.60
    diese soll dann ausgegeben werden und es soll auch der mittelwert, die varianz und der median berechnet werden.
    kann mir hier jemand helfen bzw. einen tipp geben wie ich mein problem am besten lösen kann?
    vielen dank im voraus für eure hilfe!
     

  2. #2
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Zitat Zitat von joez
    hallo!
    ich muss in java eine zeitreihe implementieren, und zwar müsste ich zunächst eine .txt - datei nach folgendem schema einlesen:
    jahr monat aktienkurs
    1998 06 8952.00
    1998 07 8883.30
    1998 08 7539.10
    1998 09 7842.60
    diese soll dann ausgegeben werden und es soll auch der mittelwert, die varianz und der median berechnet werden.
    kann mir hier jemand helfen bzw. einen tipp geben wie ich mein problem am besten lösen kann?
    vielen dank im voraus für eure hilfe!
    Wo genau hängst du denn?
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  3. #3
    joez joez ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Beiträge
    3
    hallo!
    danke für die schnelle antwort!
    also, ich hab mich hier im forum schon etwas umgesehen und hab in einem thread untenstehenden code gefunden. nur kommt immer eine fehlermeldung wenn ich versuche kommazahlen einzulesen, hab schon versucht int durch float zu ersetzen, hat aber nichts gebracht.
    weiters würde mich interessieren wie ich mittelwert, varianz und median der kurse, also nur einer spalte des arrays, auslesen kann.
    vielen dank im voraus für eure antworten!

    auszug aus thread http://www.tutorials.de/forum/showthread.php?t=173447
    [i]import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.StringTokenizer;

    public class FileCruncher {

    public static void main(String[] args) {
    try {
    BufferedReader br =
    new BufferedReader(new FileReader("c:/Numbers.txt"));

    List list = new ArrayList();

    String line = null;

    while ((line = br.readLine()) != null) {
    StringTokenizer tokenizer = new StringTokenizer(line, " ");
    int[] iA = new int[tokenizer.countTokens()];
    int cnt = 0;
    while (tokenizer.hasMoreElements()) {
    iA[cnt++] =
    Integer.parseInt((String) tokenizer.nextElement());
    }
    list.add(iA);
    }

    for(Iterator iter = list.iterator();iter.hasNext(){
    int[] iA = (int[])iter.next();
    for (int i = 0; i < iA.length; i++) {
    System.out.print(iA + " ");
    }
    System.out.println();
    }

    br.close();

    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }



    Numbers.txt

    1880 1881 1860 2332
    1882 1882 1861 2321
    1882 1882 1861 2321 1882 1882 1861 2321
    1882 1882 1861 2321
    1882 1882 1861 2321 1882 1882 1861 2321 1882 1882 1861 2321
    1882 1882 1861 2321
    1882 1882 1861 2321
    1882 1882 1861 2321 1882 1882 1861 2321
    82 18 181 231
     

  4. #4
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Code :
    1
    
    Integer.parseInt((String) tokenizer.nextElement());

    einen Integer aus einer komma zahl zu parsen ist auch kein guter Rat.

    Ich bitte dich dennoch um 2 Dinge:

    a) Bitte selber programmieren, und wenn es Probleme gibt diese hier posten, wo es genau harkt. Wir sind nicht dafür da dir deine Aufgabe komplett abzunehmen.

    b) Bitte les dir den Punkt 12 unter http://www.tutorials.de/netiquette.html durch.
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    ...hast du ein Glück, dass ich langeweile habe:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    
    package de.tutorials;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
     
    public class TimeSeriesAnalyzer {
     
        private List list;
     
        private int rowCnt;
     
        private double average;
     
        private double variance;
     
        private double median;
     
        public static void main(String[] args) {
            new TimeSeriesAnalyzer().analyze(new File("c:/Reihe.txt"));
        }
     
        private void analyze(File file) {
            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                list = new ArrayList();
     
                String line;
     
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                    list.add(line.split(" "));
                    rowCnt++;
                }
     
                calcAverage(list);
                calcVariance(list);
                calcMedian(list);
     
                br.close();
     
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        private void calcMedian(List list2) {
            // Median bei geraden n
            // Mittelwert der beiden "mittleren" Werte
            // (data[n/2] + data[n/2+1]) / 2
            if (rowCnt % 2 == 0) {
                median = (Double.parseDouble(((String[]) list.get((rowCnt-1) / 2))[2]) + Double
                        .parseDouble(((String[]) list.get((rowCnt-1) / 2 + 1))[2])) / 2;
            } else {
            // Median bei ungeradem n
            // data[(n+1)/2]
                median = Double
                        .parseDouble(((String[]) list.get((rowCnt) / 2))[2]);
            }
            System.out.println("Median: " + median);
        }
     
        private void calcVariance(List list2) {
            /*                  _n
             *  v^2 = 1/(n-1) * \    (data[i] - average)^2
             *                  /_i=1
             * 
             */
            for (int i = 0; i < rowCnt; i++) {
                variance += Math.pow(Double
                        .parseDouble(((String[]) list.get(i))[2])
                        - average, 2);
            }
            variance *= 1.0 / (rowCnt - 1.0);
            System.out.println("Variance: " + variance);
        }
     
        private void calcAverage(List list2) {
            /*           
             *           _n
             * a = 1/n * \      data[i]
             *           /_i = 0
             * 
             */
            for (int i = 0; i < rowCnt; i++) {
                average += Double.parseDouble(((String[]) list.get(i))[2]);
            }
            average /= rowCnt;
            System.out.println("Average: " + average);
     
        }
    }

    Ergibt für:
    Reihe.txt:
    1998 06 8952.00
    1998 07 8883.30
    1998 08 7539.10
    1998 09 7842.60
    Die Ausgabe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    1998 06 8952.00
     
    1998 07 8883.30
     
    1998 08 7539.10
     
    1998 09 7842.60
     
    Average: 8304.25
     
    Variance: 517818.0699999994
     
    Median: 8211.2

    HTH
    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  6. #6
    joez joez ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Beiträge
    3
    Herzlichen Dank!
     

Ähnliche Themen

  1. Text Datei einlesen und ausgeben
    Von sakizzo im Forum Java
    Antworten: 7
    Letzter Beitrag: 10.03.10, 20:19
  2. Antworten: 0
    Letzter Beitrag: 29.08.08, 06:19
  3. Antworten: 14
    Letzter Beitrag: 01.06.08, 16:23
  4. Antworten: 6
    Letzter Beitrag: 27.02.08, 06:49
  5. Datei in Array einlesen - in ListView ausgeben
    Von pipesox im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 02.12.04, 15:27