![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
Подскажите пожалуйста: читаю книгу Мука, в самом начале (стр.93 если быть точной) написано упражнение: попробуйте модифицировать предыдущий цикл, чтобы адреса, начинающиеся или заканчивающиеся символом @ либо содержащие несколько символов @, считались некорректными. Кроме того, вы можете попробовать изменить цикл, чтобы некорректными считались и адреса, не содержащие ни одного символа . (точка).
Не могу понять, что нужно писать, для того чтоб некорректными были адреса с 2 и более @. изначальный код из учебника: var adress="topoly@list.ru"; var isValidAdress=false; var i=0; while (i<adress.length) { if (adress.charAt(i)=="@") { isValidAdress=true; break; } i++; } ): |
|
|||||
|
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
должно быть примерно так:
var adress :String = "topoly@list.ru"; var isValidAdress :Boolean = true; // изначально считаем адрес валидным var containsAt :Boolean = false ; // содержит ли @ var containsDot :Boolean = false ; // содержит ли . var i :int = 0; while (i < adress.length) { if (adress.charAt(i) == "@") { if (containsAt) { // если уже содержит символ @ isValidAdress = false; // значит адрес не верный . break; } containsAt = true; // содержит символ @ if (i == 0 || i = (adress.length - 1) ) { // если @ в начале или в конце ... isValidAdress = false; // значит адрес не верный . break; } } else if (adress.charAt(i) == ".") { containsDot = true; // содержит символ . } i++; } if (!containsDot){ isValidAdress = false; } |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
спасибо большое, читаю, вникаю.
Подскажите пожалуйста зачем в части кода необходим воскл. знак? Последний раз редактировалось Ossikuro; 30.06.2010 в 18:19. |
|
|||||
|
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
опечатался: == вместо =
|
|
|||||
|
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
! - знак отрицания
== - равенство != - неравенство !containsDot - не содержит точки (!false эквивалентно true и наоборот) null тут ни при делах совершенно |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
вот еще не совсем понимаю, почему сначала проверяется содержится ли ЕЩЕ собачка в адресе, а потом имеется ли впринципе символ @ в строке
|
|
|||||
|
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
containsAt = true;
запоминаем что минимум один символ в строке уже попался ... if (containsAt) { проверяем попадался ли символ ранее (и если попадался то их уже как минимум 2. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 66
|
не) я не совсем с этим в лужу села)
Не понимаю почему сначала вы проверяете попадался или нет символ ранее, а только потом появляется Почему не наоборот? |
|
|||||
|
Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
|
потому что нужно отловить повторный символ @, ежели сначала запомнить, что он попался, а потом проверить попадался ли он ранее, то if (containsAt) сработает уже на первом символе @....(а нужно чтобы сработал на 2ом)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|