Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.06.2010, 17:14
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 1  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
По умолчанию вопрос по циклам из учебника Мука

Подскажите пожалуйста: читаю книгу Мука, в самом начале (стр.93 если быть точной) написано упражнение: попробуйте модифицировать предыдущий цикл, чтобы адреса, начинающиеся или заканчивающиеся символом @ либо содержащие несколько символов @, считались некорректными. Кроме того, вы можете попробовать изменить цикл, чтобы некорректными считались и адреса, не содержащие ни одного символа . (точка).

Не могу понять, что нужно писать, для того чтоб некорректными были адреса с 2 и более @.

изначальный код из учебника:
Код AS3:
var adress="topoly@list.ru";
var isValidAdress=false;
var i=0;
while (i<adress.length) {
	if (adress.charAt(i)=="@") {
		isValidAdress=true;
		break;
	}
	i++;
}
вот чего наскребла (предположительно тоже с ошибками, буду оч признательна, если ткнете носом в эти самые ошибки):
Код AS3:
var adress="topoly@list.ru";
var isValidAdress=false;
var i=0;
while (i<adress.length) {
	if (adress.charAt(i)=="@") {
		if (adress.charAt(0)!="@") {
			if (adress.charAt(i-1)!="@") {
			}
		}
		isValidAdress=true;
		break;
	}
	i++;
}

Старый 30.06.2010, 17:46
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 2  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
должно быть примерно так:
Код AS3:
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;
}

Старый 30.06.2010, 18:08
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 3  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
спасибо большое, читаю, вникаю.
Подскажите пожалуйста зачем в части кода
Код AS3:
if (!containsDot){
	isValidAdress = false;
}
необходим воскл. знак?


Последний раз редактировалось Ossikuro; 30.06.2010 в 18:19.
Старый 30.06.2010, 18:14
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 4  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
Код AS3:
if (i == 0 || i = (adress.length - 1) ) { // если @ в начале или в конце ...
опечатался: == вместо =

Старый 30.06.2010, 18:40
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 5  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
необходим воскл. знак?
значит что объекта нет. равносильно == null

Старый 30.06.2010, 18:43
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 6  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
! - знак отрицания
== - равенство
!= - неравенство
!containsDot - не содержит точки (!false эквивалентно true и наоборот)

null тут ни при делах совершенно

Старый 30.06.2010, 19:12
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 7  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
вот еще не совсем понимаю, почему сначала проверяется содержится ли ЕЩЕ собачка в адресе, а потом имеется ли впринципе символ @ в строке
Код AS3:
	if (adress.charAt(i) == "@") {
		if (containsAt) {			// если уже содержит символ @ 
			isValidAdress = false; // значит адрес не верный .
			break;
		}
		containsAt = true; 		// содержит символ @

Старый 30.06.2010, 20:05
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 8  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
containsAt = true;
запоминаем что минимум один символ в строке уже попался ...

if (containsAt) {
проверяем попадался ли символ ранее (и если попадался то их уже как минимум 2.

Старый 30.06.2010, 20:23
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 9  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
не) я не совсем с этим в лужу села)
Не понимаю почему сначала вы проверяете попадался или нет символ ранее, а только потом появляется
Код AS3:
containsAt = true;
Почему не наоборот?

Старый 30.06.2010, 20:35
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 10  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
потому что нужно отловить повторный символ @, ежели сначала запомнить, что он попался, а потом проверить попадался ли он ранее, то if (containsAt) сработает уже на первом символе @....(а нужно чтобы сработал на 2ом)

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.