tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von MiMi
  • 1 Beitrag von Akeshihiro
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
594
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    toni2569 toni2569 ist offline Grünschnabel
    Registriert seit
    Dec 2010
    Beiträge
    4
    Hallo liebe Community,

    ich bin neu hier und hoffe im richtigen Thread gelandet zusein. Ich möchte gern etwas Rechnen und zwar folgendes...

    Problem:
    Ich lese einen String-Wert ein über knoll.setKpreis(st.nextToken()); (Bsp.: 10,12) und möchte diesen dann berechnen.

    Erdachte Vorgehensweise:
    Um dies zu bewerkstelligen muss ich erstmal das Komma gegen einen Punkt ersetzen (kpreis.replaceAll(",", ".")"); und das ganze dann von einem String in einen double Wert umwandeln:

    Code :
    1
    2
    3
    4
    5
    
    // String aus Kpreis an String k übergeben
    String k = knoll.getKpreis();
     
    // Verwandeln des String in double und ersetzen des Kommas durch einen Punkt
    double x = Double.valueOf(k.replaceAll(",",".");

    Nun damit rechnen und fertig - so war der Gedanke! In einer TestUI geht das auch alles wunderbar.

    TestUI: - hier geht alles!

    Code :
    1
    2
    3
    4
    5
    
    String ab = "45,45";                            //String mit deutscher Kommazahl
    double x = Double.valueOf(ab.replaceAll(",", "."));     // Verwandlung des String in double und 
    double w = x * 2 ;                                  ersetzen des Kommas durch einen Punkt
    String d = String.valueOf(w);                       // Zurückwandeln für Ausgabe
    knoll.setY(d);                                      // In Y übergeben


    Vielleicht kann man mir jemand auf die Sprünge helfen und mir sagen wo ich aufgehört habe zu denken , sozusagen in meinem Kopf den grauen Zellen einen Stoß verpassen.

    Vielen Dank im voraus für jegliche Hilfe! Frohe Weihnachten!

    Herzliche Grüße!




    Hier der gekürzte Quellcode, vielleicht kann mir jemand einen Denkanstoß geben.

    Datei 1 : CSV

    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
    
    import java.io.*;
    import java.net.*;
    import java.util.*;
     
    public class CSV{
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            
            // Einlesen des Files und spliten
            BufferedReader buff = null;
            ArrayList<Knoll> lines = new ArrayList<Knoll>();
     
            try {
                
                // File Einlesen und teilen
                URL myURL = new URL("http://www.meinedomain.net/csv/import.csv");
                BufferedReader URLinput = new BufferedReader(new InputStreamReader(myURL.openStream()));
                buff = new BufferedReader(URLinput); // ggf. myFile
                String line;
                while ((line = buff.readLine()) != null) {
                    
                    
                    Knoll knoll = new Knoll();
                    StringTokenizer st = new StringTokenizer(line, ";");
                    
                    knoll.setBez1(st.nextToken());                  // Spalte 1 wird geladen und übergeben
                    knoll.setKpreis(st.nextToken());                // Spalte 2 wird geladen und übergeben
                    knoll.setUvp(st.nextToken());                   // Spalte 3 wird geladen und übergeben
                    knoll.setArtnr(st.nextToken());                 // Spalte 4 wird geladen und übergeben
                    knoll.setEan(st.nextToken());                   // Spalte 5 wird geladen und übergeben
                    knoll.setBest(st.nextToken());                  // Spalte 6 wird geladen und übergeben
                    knoll.setVorschlagversandweg(st.nextToken());   // Spalte 7 wird geladen und übergeben
                    knoll.setMarke(st.nextToken());                 // Spalte 8 wird geladen und übergeben
                    
                    String k = knoll.getKpreis();
                    double x = Double.valueOf(k.replaceAll(",", "."));
                    
                    [B]//das geht komischerweise
                    // String ab = "45,45"; 
                    // double x = Double.valueOf(ab.replaceAll(",", "."));[/B]
     
                double w = x * 2 ;
                String d = String.valueOf(w);
                knoll.setY(d);
                    
                    lines.add(knoll);       // Fügt die Daten zur ArrayList hinzu
                    
                }
     
    restlicher Quellcode....


    Datei 2 : knoll

    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    
    public class Knoll implements Comparable<Knoll>{
        
        // Variabelen werden Deklariert
        private String bez1;
        private String kpreis;
        private String uvp;
        private String artnr;
        private String ean;
        private String best;
        private String vorschlagversandweg;
        private String marke;
        
        double x ;
        double w ;
        String y ;
        
        public Knoll(){
        }
        
        // Methoden
        public String getBez1() {
            return bez1;
        }
     
        public void setBez1(String bez1) {
            this.bez1 = bez1;
        }
     
        public String getKpreis() {
            return kpreis;
        }
     
        public void setKpreis(String kpreis) {
                this.kpreis = kpreis;
        }    
        
        public String getUvp() {
            return uvp;
        }
     
        public void setUvp(String uvp) {
            this.uvp = uvp;
        }   
        
        public String getArtnr() {
            return artnr;
        }
     
        public void setArtnr(String artnr) {
            this.artnr = artnr.replaceAll(" ","");
        }   
     
        public String getEan() {
            return ean;
        }
     
        public void setEan(String ean) {
            this.ean = ean;
        } 
        
        public String getBest() {
            return best;
        }
     
        public void setBest(String best) {
                this.best = best;
     
        } 
     
        public String getVorschlagversandweg() {
            return vorschlagversandweg;
        }
     
        public void setVorschlagversandweg(String vorschlagversandweg) {
            this.vorschlagversandweg = vorschlagversandweg;
        }
     
        public String getMarke() {
            return marke;
        }
     
        public void setMarke(String marke) {
            this.marke = marke.replaceAll(" ","");
        }
            
        public double getX() {
            return x;
        }
     
        public void setX(double x) {
            this.x = x;
        }
     
        public String getY() {
            return y;
        }
     
        public void setY(String y) {
            this.y = y;
        }
        
        // Compare Sortiermethode
        public int compareTo(Knoll o) {
            return best.compareTo(o.getBest());    
        }
        
        // Reihenfolge der Ausgabe
        public String toString(){
            return 
     
    // Neue Spalte wird eingefügt
            "BLABLA" + "\t" +
     
    // trim() entfernt alle umliegenden Leerzeichen
            artnr.trim() + "\t" +   
     
    // Marke und Bezeichnung
            marke +" "+ bez1 + "\t" +
     
    // Bestand wird hinzugefügt
            best.trim() + "\t" + 
     
    // Vorschlag Versandweg
            vorschlagversandweg.trim() + "\t" +
     
    // Unverbindliche Preisempfehlung
            uvp.trim() + "\t" + 
     
    // Neuer Artikelpreis
            y + "\t" +  
     
    // Marke
            marke.trim() +"\t" +    
     
    // Artikelpreis laut CSV
            kpreis +"\t" +
     
    // Ean des Artikels
            ean.trim() + "\t" ; 
        }
        
    }
     

  2. #2
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Meine Kristallkugel raet das du
    Code java:
    1
    2
    
                    String k = knoll.getKpreis();
                    double x = Double.valueOf(k.replaceAll(",", "."));
    meinst, was nicht geht?
    Hast du dir mal k ausgeben lassen?
    Und was genau geht denn nicht?
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  3. #3
    toni2569 toni2569 ist offline Grünschnabel
    Registriert seit
    Dec 2010
    Beiträge
    4
    Hallo!

    Vielen Dank für die Antwort deiner Kristallkugel, sie hat recht. Hier mal die Fehlermeldung, ich habe mich sicherlich etwas verwirrend ausgedrückt.

    Der Wert, der in kPreis eingelesen wird ist ein String im Format "10,45". Folgender Fehler ergibt sich beim einlesen:

    Code :
    1
    2
    3
    4
    5
    
     
    Exception in thread "main" java.lang.NumberFormatException: For input string: "KPreis"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
        at java.lang.Double.valueOf(Double.java:475)
        at CSV.main(CSV.java:49)

    Zu deiner Frage:

    Die Variable k wird mir ausgegeben, scheinbar gibt es ein Problem sobald ich von meinem String in den double Wert möchte und anders herum. Warum ist das so? In der TestUI geht das doch auch alles, nur warum hier nicht?

    Herzliche Grüße!
    Geändert von toni2569 (23.12.10 um 10:55 Uhr) Grund: Hatte was vergessen!
     

  4. #4
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Hast du es dir mal mit nem System.out ausgeben lassen ( knoll.getKpreis() )?
    Und diesen Wert auch mal extra
    Code java:
    1
    
    k.replaceAll(",", ".")
    ausgeben lassen?
    toni2569 bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  5. #5
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Kann ja auch nicht funktionieren, weil in deinem String keine Zahl steht, sondern "KPreis". Die Fehlermeldung sagt doch alles aus
    toni2569 bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  6. #6
    toni2569 toni2569 ist offline Grünschnabel
    Registriert seit
    Dec 2010
    Beiträge
    4
    Hallo!

    @ MiMi
    Es gibt einen Fehler sobald ich von meinem String in den double möchte. -> siehe Akeshihiro

    @ Akeshihiro
    Ja Klar, ich bin ja auch selten dämlich! Der liest aus der Datei natürlich die erste Zeile mit ein, in der kein String steht der zu einem double umgewandelt werden kann, denn das ist die Spalten Beschreibung. Folglich muss dieser Fehler kommen, da habe ich mit keiner Silbe dran gedacht! Einfach die oberste Zeile weg hauen und dann rechnen...

    VIELEN DANK

    Frohe Weihnachten!

    Herzlichste Grüße!
     

  7. #7
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Deswegen solltest du dir knoll.getKpreis() ausgeben lassen, dann findet man solche fehler.
    ->
    "Hast du es dir mal mit nem System.out ausgeben lassen ( knoll.getKpreis() )? "
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  8. #8
    toni2569 toni2569 ist offline Grünschnabel
    Registriert seit
    Dec 2010
    Beiträge
    4
    Ich habe das quasi parallel gemacht Die Glühlampe ging sozusagen zweimal an und erleuchtete die Kugel. Großes DANKE****** So kann ich beruhigt über Weihnachten etwas rumbasteln.
     

Ähnliche Themen

  1. MySQL-Daten einlesen und damit rechnen
    Von Jens B. im Forum PHP
    Antworten: 4
    Letzter Beitrag: 28.11.09, 18:34
  2. XML nach einlesen geht nicht
    Von jackisback im Forum Flash Plattform
    Antworten: 0
    Letzter Beitrag: 10.02.09, 21:38
  3. text nach komma einlesen
    Von gazale_m im Forum Java
    Antworten: 7
    Letzter Beitrag: 01.08.07, 08:14
  4. Daten nach Trennzeichen einlesen
    Von StefanR im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.02.04, 16:05
  5. Nach welchem System funktinioniert das einlesen?
    Von Johannes Postler im Forum PHP
    Antworten: 5
    Letzter Beitrag: 07.12.03, 21:09

Stichworte