2012-04-04 16 views
0

Mein Code scheint nicht zu funktionieren, wenn das Zeichenfolgen-Token ein Int ist. Hier ist sie:Zeichenfolge in Double zerlegen

public class CO2Data { 

    CO2Data dataSet[] = new CO2Data[10]; 
    String strLine = "Italy 476.08 116.86 2 592"; 
    int lines = 10; 
    double roadCO2; 

    public void saveLineInfo(String strLine, int lines) { 
     StringTokenizer token = new StringTokenizer(strLine); 
     String str = "hello"; 
     int count = 0; 
     for (int i = 0; i < lines; i++) { 
      while (token.hasMoreTokens()) { 
       str = token.nextToken(); 
       if (count == 3) { 
        getRoadCO2(str, roadCO2); 
        dataSet[i].setRoadCO2(roadCO2); 
       } 
       count++; 
      } 
     } 
    } 

    public double getRoadCO2(String str, double roadCO2) { 
     roadCO2 = Double.parseDouble(str); 
     return roadCO2; 
    } 

    public void setRoadCO2(double roadCO2) { 
     this.roadCO2 = roadCO2; 
    } 
} 

Im Rest der Linien, roadCO2 eine doppelt so hoch ist, so dass ich mein Programm zu raten ist verwirrt? Wie repariere ich es? Vielen Dank!

+3

Sie können einen Tag für diese für die eigentliche Sprache hinzufügen Sie verwenden. Es sieht wie Java aus, aber es könnte eine von vielen verschiedenen Sprachen sein. Auch das Scoping für roadCO2 ist ein Chaos innerhalb der getRoadCO2-Funktion ... – Ariel

+0

Ist das C# oder C++? Auch Ihre Frage zur Variable roadCO2 oder betrifft sie den Parameter "String strLine"? – hypervisor666

+0

Sorry, es ist Java. –

Antwort

1

Ich würde empfehlen, die Namen der Parameter zu Ihren Methoden zu etwas etwas anders als die Klasse Datamember "roadCO2" zu ändern. Das könnte Ihnen helfen, den Fehler zu beheben :)

1

Als ich Ihren Code ausgeführt habe, habe ich eine NullPointerException in Zeile 22 erhalten. Dies ist, weil das Array 'Daten' nicht initialisiert wurde.

können Sie Ihr Array initialisieren als

for(int i = 0; i < dataSet.length; i++) { 
    dataSet[i] = new CO2Data(); 
} 
2

folgt Sie Nullpointer bekommen, weil

Sie ein Array von CO2Data dataSet[] = new CO2Data[10]; deklariert haben, aber jedes Element in diesem CO2Data[] array zeigt auf Null.

Daher dieser Aufruf: dataSet[i].setRoadCO2(roadCO2); generiert ein NullPointerException weil dataSet[i] auf null zeigt.

Lösung:

Instantiate dataSet[i] = new CO2Data(); dann rufen dataSet[i].setRoadCO2(roadCO2);

Verwandte Themen