2015-06-26 2 views
0

Я использую функцию .before(), чтобы удостовериться, что старое значение меньше, чем новое значение, но проблема в том, что я разрешаю пользователю иметь нули в любом из этих двух значений, поэтому, когда сравнивает значение с null ... он терпит неудачу.before() сбой при сравнении с нулями

Мой код:

public getDetails(Calendar older, Calendar newer) { 
    if (older.before(newer)) { 
     System.out.println("Works"); 
    } else { 
     System.out.println("Works"); 
    } 
} 

Один из вариантов я подумал о том, чтобы проверить, все ли значение равно нулю и имеют функцию пропуска.

Так что я пробовал:

if ((older || newer) == null || older.before(newer)) 

Есть ли чище и более короткий путь, чтобы сделать это?

+1

Есть ли какие-либо участники что вы разрешаете пользователю передавать «нуль»? Это не похоже на то, что этот случай является частью цели вашей функции, поэтому вы, вероятно, не должны позволять ей вообще возникать. –

+0

@RedRoboHood Да, я обрабатываю нули для вытягивания разных списков, поэтому пользователь может иметь один или оба в качестве нулей – user4756836

+0

Что вы подразумеваете под «вытягиванием разных списков»? –

ответ

1

Не проходит нуль лучше ... Java 8 имеет опцию Дополнительно ... что означает, что значение не может быть подан ... Optional.isPresent() ...

Указанный вами код не будет работать, потому что первый старых и новых сравниваются, то их результат к нулю, и в то же время older.before (новая)

if ((older || newer) == null || older.before(newer)) 

Это должно сделать, одно сравнение в то время

if(older==null || newer==null || older.before(newer)) 
Смежные вопросы