Показать сообщение отдельно
Старый 25.04.2014, 15:48
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 1  
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
По умолчанию Не выполняется цикл while

Вчера до четырёх утра не мог понять, думал, что посплю и увижу причину, но сегодня все так же не могу понять в чем дело. Может чей-то свежий взгляд избавит меня от мучений Вопрос в коде -
И ещё интересно, было ли у кого-нибудь, что FD начинал глючить и что с этим делать? Вчера целый день ушел на поиск ошибки, которой не было, сегодня...
Код AS3:
package 
{
	import flash.display.Sprite;
 
	public class Main extends Sprite 
	{
		private var _array:Array;
 
		public function Main() 
		{
			_array = new Array(1,8,8,9,9,9,3,7,7,7);
 
			trace(selectionSort(_array, comparator))
		}
		private function selectionSort(array:Array, comparator:Function):Array
		{
			var data:*, i:int, j:int, min:int, lenght:int = array.length;
 
			while (i < length)
			{
				min = i;
				j = i;
 
				while (j < length)
				{
					if (array[j++] < array[min])
							min = j - 1;
				}
 
				data = array[min];
				array[min] = array[i];
				array[i] = data;
				i+=1;
			}
 
			trace(lenght); // 10
			var a:int = 0;
 
			while (a++ < length)
					trace(a); // 1 Почему цикл выполняет только одну итерацию?
 
			return array;
		}
 
		public static function comparator(a:Number, b:Number):int
		{
			if (a < b) return -1;
			if (a > b) return 1;
			return 0;
		}
 
		private function random():int
		{
			return Math.random() * 10;
		}
	}
}
Добавлено через 33 минуты
Удалил и заново создал условия в скобках и заработало. Полтора дня ушло на два глюка.