2016-09-21 1 views
2

Je fais une petite fonction AS3 de la conjecture de Collatz. Voici le code:Le texte d'entrée change un entier? 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 
     } 
    } 
} 

Cependant, parfois textinput devient un nombre négatif.

123123123123 se transforme en -1430928461

12312312312321312 se transforme en -1715645152

Et ainsi de suite.

Je ne sais pas pourquoi, mais je pense qu'il doit faire avec

numb=int(input.text) 

Mais je ne veux pas faire valeur absolue, parce que l'équation rendrait les mauvais résultats. Si vous voulez arrêter le nombre négatif (et tester vous-même) faire:

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

Au lieu de

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

Répondre

4

12312312312321312 se transforme en -1715645152

Ce nombre de chiffres ne correspond pas au type de données integer. Remplacez chaque int par Number et testez à nouveau.

-à-dire: var numb:Number=0; et var amount:Number=0; et numb=Number(input.text);

+0

Cela a fonctionné !!! Je vous remercie! –