Comment pourrais-je aller sur la fixation d'une NullPointerException le code suivant?
J'ai ce code et quand je lance le script, je passe dans les paramètres valides, mais j'obtiens toujours un NPE.
De l'aide?
Code:
private static Date getNearestDate(List<Date> dates, Date currentDate) {
long minDiff = -1, currentTime = currentDate.getTime();
Date minDate = null;
if (!dates.isEmpty() && currentDate != null) {
for (Date date : dates) {
long diff = Math.abs(currentTime - date.getTime());
if ((minDiff == -1) || (diff < minDiff)) {
minDiff = diff;
minDate = date;
}
}
}
return minDate;
}
- Je obtenir le NullPointerException à partir de la ligne 2 du code ci-dessus et j'utilise le code suivant pour passer à thisDate comme le currentDate variable.
Date thisDate = null;
try {
thisDate = (new SimpleDateFormat("MM/dd/yyyy")).parse(Calendar.getInstance().getTime().toString());
} catch (Exception e) {}
eh bien, quelle ligne vous donne la npe...
Où en êtes-vous de la NPE, et que les arguments? Une courte mais complète du programme aiderait...
Mon edit aider avec vos préoccupations?
Hm, mon plan est que vous avez les valeurs null comme des éléments de la liste. des dates peuvent pas être null, mais peut avoir des éléments de valeur null. En supposant que les dates, c'est vraiment valable et non pas la valeur null.
Si c'est la ligne 2, il faut de la
Où en êtes-vous de la NPE, et que les arguments? Une courte mais complète du programme aiderait...
Mon edit aider avec vos préoccupations?
Hm, mon plan est que vous avez les valeurs null comme des éléments de la liste. des dates peuvent pas être null, mais peut avoir des éléments de valeur null. En supposant que les dates, c'est vraiment valable et non pas la valeur null.
Si c'est la ligne 2, il faut de la
currentDate
argument c'est null
.
OriginalL'auteur Confiqure | 2011-08-20
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez indiqué que le
NullPointerException
est jeté sur la ligne 2, nous pouvons en déduire que vous êtes de passage dansnull
pour lacurrentDate
argument.currentDate.getTime()
est la seule partie de la ligne 2 qui peut causer uneNullPointerException
.Mise à jour:
J'ai juste écrit ce qui suit
Test.java
code pour vraiment comprendre ce que votre problème est:Quand je le lance, j'obtiens:
Donc, le problème, c'est que votre
SimpleDateFormat.parse()
attend le mois/jour/année format, mais leDate
de la classetoString()
méthode est de vous donner quelque chose de différent.Il semble comme si tout ce que vous voulez vraiment est la date actuelle. Pourquoi la peine de le formater? Juste la réduire à cela et être fait avec elle:
sdf
? Je pense qu'il est évident que lessdf.parse()
est de retourner la valeur null ou la levée d'une Exception que vous êtes de la déglutition et de ne rien faire. Je parie que c'est le dernier.Mais cette méthode de la Date est amorti. Est-il un meilleur moyen?
EDIT: Nevermind. Je vais l'essayer et de vous laisser savoir en une seconde.
YAY!!! Merci!!!!!!
OriginalL'auteur Asaph
Ce que votre ligne:
n'est
null
)Si vous corrigez tous les problèmes de cette ligne, le résultat final sera un
Date
objet contenant l'heure actuelle.Un moyen beaucoup plus facile d'obtenir de tels
Date
est:Calendar.getInstance().getTime()
renvoie unejava.util.Date
et vous êtes juste à l'appel detoString()
. Vous n'avez jamais obtenir le nombre de millisecondes.bonne prise! Mis à jour pour refléter ce réel qui se passe 🙂
Maintenant ce qui est faux:
convert that to string which will use the default format "yyyy-mm-dd"
. Un exemple de format date chaîne de caractères retournée parjava.util.Date.toString()
est-ce:Sat Aug 20 12:42:30 PDT 2011
.OriginalL'auteur rsp