2012-09-24 5 views
7

Mein Programm empfängt einige Eingaben (a String). Es ist eher möglich, dass die Eingabe in der Form eines double ist, wie "1.5". Aber ich möchte es in eine integer konvertieren, so dass ich nur mit einem 1 enden kann.Wie kann ich parseInt für ein Double verwenden?

Zuerst habe ich versucht, diese:

Integer.parseInt(someString); 

Aber es funktioniert nicht - ich nehme an, es wegen des Punktes ist ., dass es es nicht analysieren kann.

Also dachte ich, dass die Integer Klasse kann integer von einem double erstellen. Also beschloss ich, einen double zu erstellen und dann eine int machen, wie folgt aus:

Integer.parseInt(Double.parseDouble(someString)); 

Aber anscheinend gibt es

kein geeignetes Verfahren für parseInt (double) gefunden

So , was schlagen Sie vor? Gibt es One-Liner dafür? Ich dachte über eine Methode nach, die den Punkt und alle Zeichen danach entfernt ... aber das klingt nicht sehr cool.

Antwort

7

Es ist sicher, alle Zahlen als double zu analysieren, dann wandeln Sie es in einen anderen Typ um. Wie folgt aus:

// someString = "1.5"; 
double val = Double.parseDouble(someString); // -> val = 1.5; 
int intVal = (int) Math.floor(val);   // -> intVal = 1; 

Beachten Sie, dass mit Java 7 (nicht mit früheren JVM getestet, aber ich denke, es sollte auch funktionieren), wird dies ergibt auch das gleiche Ergebnis wie oben:

int intVal = (int) Double.parseDouble(someString); 

als Umwandlung Von einem Gleitkommawert zu einem Int wird jede Dezimalzahl ohne Rundung fallen.

+0

... Gießen auf int! Total vergessen. Vielen Dank. – Voldemort

1

Versuchen,

int no= new Double(string).intValue(); 
2

Sie haben die Double bekam, nehme ich an, mit Double.parseDouble. Verwenden Sie also einfach:

int i = (int) Double.parseDouble(someString); 
+1

... außer, 'Double.parseDouble (str)' gibt ein 'double' zurück, und deshalb kann man' intValue() 'nicht auf einem Primitiv aufrufen. –

+0

Ah, ausgezeichneter Punkt. Danke für die Bearbeitung! Sie können auch den 'new Double (String)' Ansatz verwenden. – craigmj

4

verwenden Casting.

double val = Double.parseDouble(someString); 
int intVal = (int) Math.floor(val); 
1

Versuchen Sie folgendes:

1) Analysieren Sie die Zeichenfolge als Doppel 2) gegossen aus Doppel

public static void main(String[] args) { 
    String str = "123.32"; 
    int i = (int) Math.floor(Double.parseDouble(str)); 
    System.out.println(i); 

} 
Verwandte Themen