2016-03-23 6 views
0

ich das unten Stück Code haben:Ausnahme: java.lang.String kann nicht auf java.lang.Integer gegossen werden

Integer mRuntime = (Integer) movie.get("runtime"); 
String movieRuntime; 
if(mRuntime == null){ 
    movieRuntime="*Not Available*"; 
} else{ 
    movieRuntime = String.valueOf(mRuntime); 
} 

In dem obigen Code Ich versuche, den Wert der Laufzeit zu überprüfen, die eine ist Ganzzahl und versuchen, den Wert in String zu konvertieren, wenn es nicht NULL ist. Wenn es null ist, schreibe ich eine benutzerdefinierte Nachricht an String, die besagt, dass sie nicht verfügbar ist.

Aber wenn ich versuche, den Code auszuführen ich die folgende Meldung bin immer:

nested exception is java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 

bei

Integer mRuntime = (Integer) movie.get("runtime"); 
+0

„Ich versuche, den Wert der Laufzeit zu überprüfen, die eine ganze Zahl ist“, basierend auf der Fehlermeldung '(Integer) movie.get (" runtime ")' scheint String zurückzugeben, nicht ganzzahlig. Überprüfen Sie es. – Pshemo

Antwort

0

Wenn der Wert unter dem Schlüssel gespeichert runtime nicht vom Typ ist Integer Sie unweigerlich in diesen ClassCastException laufen werden. Sie können die Sache wie folgt umschreiben, Filme unter der Annahme ist ein Map:

String movieRuntime; 
if (!movies.containsKey("runtime")) { 
    movieRuntime="*Not Available*"; 
} else if (movies.get("runtime") instanceof Integer){ 
    movieRuntime = String.valueOf(movies.get("runtime")); 
} 
// add an else case for all the other types 
0

movie.get("runtime") gibt ein String. Sie möchten ein String. Du bist gut. Genau dies tut:

String movieRuntime = movies.get("runtime"); 
if (movieRuntime == null) { 
    movieRuntime = "*Not Available*"; 
} 
Verwandte Themen