Рейтинг:
6
CPallini
Ваша реализация (та, что в комментарии) полна ошибок. Надеюсь, я все исправил. Попробуй
import java.util.Scanner;
public class PasswordValidator
{
public static void main (String[] args)
{
Scanner input = new Scanner (System.in);
boolean isSecure =isSecurePassword( input.nextLine());
System.out.println(isSecure);
}
public static boolean isSecurePassword (String password)
{
if ( password.length() < 10) return false;
boolean uppercase=false;
boolean lowercase=false;
boolean digit=false;
for(char c : password.toCharArray())
{
if (c >='a'&& c <='z')
lowercase = true;
else if (c >='A'&& c <='Z')
uppercase =true;
else if ( c >='0' && c<='9')
digit = true;
}
return (uppercase && lowercase && digit);
}
}
Member 13676546
большое спасибо за его отладку ( правильно ли так говорить?), единственное, что я не могу использовать массив.
CPallini
Добро пожаловать.
Member 13676546
как мы можем переписать его без использования массива ?
CPallini
for(char c : password.toCharArray())
это то же самое, что
for (int i = 0; i < password.length(); ++i)
{
char c = password.charAt(i);
Member 13676546
еще раз спасибо за объяснение. это было ясно и полезно.
CPallini
Добро пожаловать снова. :-)
Рейтинг:
0
OriginalGriff
Прочтите вопрос: это делает довольно очевидным, что вы должны делать.
1) читать в строке.
2) Проверьте, что он имеет 10 символов. Если это не так, верните false.
3) объявите три логические переменные: hasUpperCase, hasLowerCase, hasDigit и установите для них все значения false.
4) петля через строку, глядя на каждый символ по очереди.
4.1) если он прописной, установите hasUpperCase в true.
4.2) В противном случае, если он строчный, установите hasLowerCase в true.
4.3) В противном случае, если это цифра, установите hasDigit в true.
4.4) В противном случае верните false;
5) после цикла верните hasUpperCase, hasLowerCase и hasDigit
Member 13676546
спасибо за объяснение . когда я компилирую первую часть, которая проверяет, имеет ли она 10 символов, она дает сообщение, что она должна возвращать логический тип .. так что я все еще застрял в первой части вопроса..
OriginalGriff
Это потому, что вы не делаете то, что я предложил: посмотрите на свой код и мысленно проследите его (или используйте отладчик) - он фундаментально испорчен, если вы посмотрите на все внимательно.
OriginalGriff
Я хотел сказать: "какие ошибки?" но потом я прочитал код ... ах милый...
Хватит гадать. Начинать думать. Вернитесь к тому, что я сказал вначале, и прочитайте это снова. Это то, что вы делаете?
Подсказка: https://stackoverflow.com/questions/2451650/how-do-i-apply-the-for-each-loop-to-every-character-in-a-string
Member 13676546
спасибо за ссылку, однако, я новичок, и я только что изучил условный цикл и немного струнных очень основ.. не что-нибудь еще, Цель упражнения состоит в том, чтобы написать метод и вызвать его. мы не можем использовать сканер в методе, но мы можем проверить результат ( который должен быть Булевым типом) через основной метод. поэтому мне нужно написать программу для проверки пароля с основами.
OriginalGriff
Вам нужно получить доступ к каждому символу индивидуально, чтобы узнать, что это за символ: это означает цикл и либо конструкцию "для каждого", либо индекс массива - как показывает ссылка.
Я предлагаю вам просмотреть свои заметки о курсе и посмотреть, с какими циклами вы познакомились: без одного вы не можете выполнить упражнение, поэтому я подозреваю, что вы просто пропустили их, когда были в классе по какой-то причине.
Member 13676546
Я еще не выучил массив. и ваша догадка не верна. Я изучил эту тему и знаю, что, поскольку она новая, мне нужно больше практиковаться, чтобы понять концепции. Я также здесь, чтобы получить помощь в моем кодировании, а не быть осужденным.