2016-09-21 1 views
2

Я делаю небольшую функцию AS3 гипотезы Collatz. Это код:Текст ввода изменяет целое число? AS3

import flash.events.Event; 
import flash.events.MouseEvent; 

var numb:int=0 
var amount:int=0 
button.addEventListener(MouseEvent.CLICK, buttonclick) 
function buttonclick(buttonclicked:MouseEvent):void{ 
    numb=int(input.text) 
    trace(numb) 
    amount=0 
} 
stage.addEventListener(Event.ENTER_FRAME, equate) 
function equate(equate:Event):void{ 
    dynam.text=amount.toString() + "\n" + numb.toString();; 
    if(numb !=0 && numb !=1){ 
     if(numb % 2 == 0){ 
      numb=numb/2 
      amount+=1 
     } 
     else{ 
      numb=numb*3+1 
      amount+=1 
     } 
    } 
} 

Однако иногда TextInput становится отрицательным числом.

123123123123 превращается в -1430928461

12312312312321312 превращается в -1715645152

И так далее.

Я не знаю, почему, но я думаю, что он должен делать с

numb=int(input.text) 

Но я не хочу, чтобы сделать абсолютное значение, потому что тогда уравнение будет делать неправильные результаты. Если вы хотите, чтобы остановить на отрицательное число (и проверить это самостоятельно) сделать это:

if(numb !=0 && numb !=1 && numb>1) 

Вместо

if(numb !=0 && numb !=1) 

ответ

4

12312312312321312 превращается в -1715645152

Это количество цифр не будет соответствовать типу данных integer. Заменить каждый int с Number и снова проверить.

т.е. var numb:Number=0; и var amount:Number=0; и numb=Number(input.text);

+0

Это работало !!! Спасибо! –