2016-03-28 6 views
0

Ich arbeite an einem Projekt bei der Arbeit und einige Probleme mit der Analyse einer Zahl. Ich bin mir nicht sicher, warum ich die merkwürdigen Ergebnisse bekomme, die ich bin.Parsing JFormattedTextField, Daten bearbeiten und zurück zu String

zu starten ich ein JFormattedText Feld haben, die eine 12-stellige Zahl hält, etwa so:

referenceNumberField = new JFormattedTextField(nf); 
     referenceNumberField.setText("371260062101009"); 
     referenceNumberField.setColumns(12); 
     panel5.add(referenceNumberField); 

Es gibt eine Schleife weiter in meinem Programm ist, dass diese Zahl eine unbestimmte Menge an Zeiten geschrieben werden verursacht. Ich wurde gebeten, sicherzustellen, dass die Nummer jedes Mal anders ist, wenn sie geschrieben wird, ohne die Anzahl der Ziffern zu ändern. Um dies zu tun, habe ich beschlossen, den aktuellen Zählerwert zu der Zahl jedes Laufes hinzuzufügen, daher wird es immer anders sein, aber 12 Ziffern bleiben.

Um zu starten, habe ich versucht, das JFormattedTextField in einen String zu analysieren.

String referenceStartingString = referenceNumberField.getText(); 

Dieser Teil funktioniert ordnungsgemäß. Als nächstes möchte ich es in ein Doppel verwandeln, damit ich es manipulieren kann.

double referenceNumberDouble = Double.parseDouble(referenceStartingString); 
        System.out.println("Reference Number Double: "+referenceNumberDouble); 

Das Problem, das ich wirklich habe, liegt hier. Das Ergebnis, das ich von der Laufzeit erhalten, ist dies:

Reference Number Double: 3.71260062101009E14 

Ich bin nicht sicher, warum die Dezimalzahl hinzugefügt wurde, noch bin sicher, dass ich, warum genau die „E“ in der Zahl ist. Ich dachte, dass für Exponenten stand und zeigt nur auf, wenn die Zahl die Grenzen für Doppel überschreitet (was ich glaube nicht, dass dies der Fall ist) ..

Nur um zu klären die nächsten Stufen sind

Drehen meines Zählers in ein Doppel

double countDouble = (double) j; 

Hinzufügen die beiden zusammen:

double referenceTotal = referenceNumberDouble + countDouble; 

und zurück in einen String drehen ..

String referenceString = String.valueOf(referenceTotal); 

Ohne in der Lage zu sein, die Schnur in ein Doppel zu verwandeln, kann ich nicht weiter gehen, ich schätze jede Hilfe!

Antwort

1

Das E bedeutet *10^. Dies liegt daran, dass int einen maximalen Wert von etwa 2000000000 hat. Versuchen Sie, zu lange statt zu int zu analysieren. Long.parselong()

+0

Vielen Dank! Ich hätte daran denken sollen, aber ich dachte, dass Double eine extrem große Zahl halten könnte. Ich werde zu lange wechseln und von dort aus gehen. Ich werde Ihre Antwort nach der 10-minütigen obligatorischen warten. – jesric1029