Есть пара проблем.
- Вам нужны двойные кавычки вокруг этих строковых литералов
"weak pass"
и так далее. - откуда вы берете длину? Вы можете передать строку для проверки в качестве параметра, а затем посмотреть длину. Вот так:
public String test(String password)
{ int length = password.length;
if (length < 8)
etc...
- Что такое цифра? Это метод или переменная? Я не знаю, собирались ли вы опубликовать псевдокод, но его синтаксис недопустим.
После этого вы можете прочитать его. В первом операторе if
вы проверяете, если длина меньше 8, и возвращаете "weak pass"
, если это так. Когда вы доберетесь до второго if
, вы уже знаете, что длина> = 8, поэтому вам больше не нужно тестировать. Вы можете, если хотите прояснить другим разработчикам, для чего вы тестируете, но это не нужно и может добавить беспорядок, который вас смущает.
Итак, вы написали выражение ((length <=8) || (length <=8 && digit) || (digit <=8 && other))
там. Вы можете удалить <
, потому что они никогда не соответствуют действительности. Если это меньше 8, вы уже вернули что-то в свой первый if. Итак, теперь у вас есть (length==8 || (length ==8 && digit) || (digit <=8 && other))
Я не уверен, действительно ли вы имели в виду digit <=8
там или length <=8
. Я предполагаю, что length <= 8
, так что тогда (length==8 || (length == 8 && digit) || (length == 8 && other))
Если первая часть этого условия length==8
истинна, результат верен. Вот как работает логическое значение ИЛИ. Таким образом, это означает, что второе и третье условия больше не нужны, потому что они будут оцениваться, только если length != 8
, и в этом случае ни один из (length == 8 && digit)
или (length == 8 && other)
не является истинным.
Последнее if
оператор (length <= 8 && digit && other)
требует, чтобы length <= 8
. Однако, если это так, вы уже вернули значение в первом или втором операторе if, поэтому тест в последнем if
никогда не будет верным. Вы можете пропустить это.
В итоге, у вас есть вот что:
if (length < 8)
return weak pass;
if (length == 8)
return medium pass
return null;
Я думаю, что вы, возможно, захотите прочитать о булевой логике. Вы можете обнаружить, что or
и and
не имеют в виду то, что, по вашему мнению, они делают. На общем языке они часто используются взаимозаменяемо, но в булевой логике они имеют очень точное значение.