2013-05-07 2 views
-6

Каков наилучший способ избежать нескольких блоков if, которые используются для null проверок на Java?Как избежать нескольких циклов IF в Java

Следующий мой пример кода. Какой из них наиболее оптимизирован?

if (address!=null} { 
    if (firstName!=null) { 
     if (lastName!=null) { 

     } 
    } 
} 
+0

Другой подход, используйте необходимый параметр в своей HTML-форме. Взгляните сюда [link] http://webdesign.about.com/od/html5tags/p/required-attribute.htm [/ link] (есть много других источников, но этот только что появился первым) – RST

+1

Осторожно с клиентом если он не работает с браузером html5, то это будет бесполезно – MisterJ

+0

Ваш образец кода даже не компилируется. –

ответ

6

Использование и оператор (& &)

if(address!=null && firstName!=null && lastName!=null) 
    { 
     //DoSomething here 
    } 

И я предлагаю вам увидеть Short circuit evaluation

+2

@ Downvoter. Я уверен, что в моей строке нет ошибки. Пожалуйста, обратите внимание, если вы нашли что-то –

+3

+1, потому что это первый правильный ответ, не уверен, почему он занижен. – Habib

+0

@Habib thankyou :) Я думаю, что даже те не уверены, почему они сбиты с толку :) –

8

Использование &&. && логичен и. && сочетает в себе два значения и возвращает логическое значение, которое истинно тогда и только тогда, когда оба операнда истинны

if(address!=null && firstName!=null && lastName!=null) 
{ 
} 

Например

boolean b; 
b = 3 > 2 && 5 < 7; // b is true 
b = 2 > 3 && 5 < 7; // b is now false 
6

if loop это неправильное слово. Вы должны сказать if statements
Как и в случае, если вы вы можете использовать ИЛИ (||) или И (& &) заявление как этот

if(address!=null && firstName!=null && lastName!=null) 
{ 
} 


Попробуйте AND(&&), если вы хотите, чтобы пройти все проверки или Intead вложенной если заявления и попытаться OR(||) для не вложенная как else if или просто говорит, что если вы хотите передать кому-то из вашего состояния

Но если все эти строки, то вы должны попробовать, как этот
"yourValue".equals(stringValue)
Это пропустит нулевую проверку.

+0

@downvoter, пожалуйста, позаботьтесь о комментарии.otherwise я помечаю это модератору – Freak

+1

не отмечать это для умеренности, потому что он будет отклонен. Но да downvoter должен оставить комментарий IMO – Habib

+0

ok i dint знаю об этом. Я думал, что мы можем отметить любое внимание к модератору.thanks bro :) – Freak

3

нет, если LOOPS

boolean complete = address != null && firstName != null && lastName != null; 
if (complete) 
{ 
} 
1

насчет:

public boolean notNulls(Object ... args) { 
    for(Object arg : args) 
     if (arg == null) return false; 
    return true; 
} 

Использование:

if (notNulls(address, firstName, lastName)) { 
    // do something 
} 
+1

более сложный, а не простой Если –

-1

Как и другие отмечают, логическое и (& &), вероятно, лучший способ консолидировать свою логику. Операция & & будет оцениваться только true, если обе стороны оценили значение true.

if (address != null && firstName != null && lastName != null) { 
    // Whatever you want to do with that... 
} else { 
    // Whatever you want to do with bad input 
} 

Для разнообразия вы также можете использовать подход try-catch. В Java исключение NullPointerException будет выбрано, если вы попытаетесь вызвать метод с нулевым значением, которое вы можете поймать и обработать.

try { 
    // Whatever you want to do with that... 
} catch (NullPointerException npe) { 
    // Whatever you want to do with bad input 
} 

Этот подход может быть полезным, если у вас есть действительно большой набор входов, которые могут быть нулевым, хотя в целом я бы не стал отстаивать его.(Проблема со вторым подходом заключается в том, что если вы вызываете какой-либо другой метод из части try, которая запускает исключение NullPointerException, оно будет в конечном итоге в блоке catch здесь, хотя оно может быть совершенно не связано с этими входами - то есть вы можете сделать это вам трудно обнаружить ошибку в другой части вашей программы.)

+0

Код никогда не должен бросать 'NullPointerException' под обычный обстоятельства. Блок catch может скрыть исходную ошибку, вызывая другие более тонкие ошибки. [Строгие правила исключения] (http://pmd.sourceforge.net/pmd-4.2.6/rules/strictexception.html) –

+0

Я согласен (это то, что я получал в своем последнем абзаце, хотя и не так лаконично). Необходимо понять, что _can_ сделать на языке, прежде чем понять, что должно быть сделано; поскольку ОП самоопределяется как новичок на Java, я думаю, что это актуально. – killscreen

Смежные вопросы