2014-10-28 2 views
0

Итак, мы имеем:Условный если evaulation с &&

if (arguments.length != 1 && arguments.length != 2) { 
    throw new IllegalArgumentException("Wrong number of arguments in " + string); 
} 

Если arguments имеет длину 1 она проходит это, если блок, но why. Оценка должна работать после того, как мне известно, как это:

если (! Арг = 1 == TRUE) И (! Арг = 2 == верно)

args.length = [0, 3, 4, ...] Значение должно быть действительным только действует до проходить. Но он пропускает if, даже если он есть с args.legth == 1.

Как это возможно? Благодарю.

ответ

3

Казалось, что это должно быть

if (arguments.length == 1 || arguments.length == 2) { 
    throw new IllegalArgumentException("Wrong number of arguments in " + string); 
    } 
2

Если вы хотите, чтобы что-нибудь в течение 1 или 2, за исключением, используйте:

if (args.length == 1 || args.length == 2) { 
throw new IllegalArgumentException("Wrong number of arguments in " + string); 
} 
0

если аргументы имеет длину 1 он проходит этот если блок, но почему. оценка должна работать после того, как мне известно, как это:

если (арг = 1 == верно!) И (арг = 2 == правда!)

Это doen't особого смысла. Если args.length равно 1, то args.length != 1 является ложным, а не true.

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