分数简化-ActionScript 3

时间:2018-07-25 00:41:32

标签: loops actionscript-3 greatest-common-divisor

我在ActionScript 3上还很陌生,并且试图创建一个简化分数的程序。我相当确定,在'gcd'函数中执行循环方面存在错误,但是没有弹出错误(对于语法或其他方式),并且逻辑似乎很有意义。但是,当我输入分子和分母时,似乎什么也没发生。请指教。谢谢!

这是到目前为止我要做的事情:

//add the click listener to a new function
btnDetermine.addEventListener(MouseEvent.CLICK, clickHandler);

var no1:Number = Number(txtinno1.text);
var no2:Number = Number(txtinno2.text);
var i:Number;
var trueFalse:Boolean;

function clickHandler(e:MouseEvent):void {

    //call the gcd function
    gcd(no1, no2);
}


function gcd(no1:Number, no2:Number):void {
    for (i = 2; (i < no1) && (i < no2) && (trueFalse == false); i++) {
        if (no1 % i == 0 && no2 % i == 0) {
            trueFalse = true;
            no1 = no1/i;
            no2 = no2/i;
            lblGCD.text = no1 + "/" + no2;
        }   
        else if (no1 == i || no2 == i) {
            lblGCD.text = no1 + "/" + no2;
        } 
        else {
            lblGCD.text = "Invalid!";
        }
    }
}

1 个答案:

答案 0 :(得分:0)

btnDetermine.addEventListener(MouseEvent.CLICK, clickHandler);

var no1:Number;
var no2:Number;

function clickHandler(e:MouseEvent):void {
    //this way it updates everytime you click
    no1 = Number(txtinno1.text);
    no2 = Number(txtinno2.text);

    //call the gcd function
    gcd(no1, no2);
}

定义变量时,只要文本字段更新,它就不会自动更新。您将需要自己更新变量。在您的情况下,您将它们设置为在初始化时单击功能之外,此时文本字段为空,因此您的电话号码为 null 。因为当用户单击 btnDetermine 时,您的gcd函数将需要它,因此单击后可以读取文本字段值,并在同一函数中对其进行定义。因此,在需要时更新变量。