【问题标题】:Fraction Simplification -Actionscript 3分数简化-Actionscript 3
【发布时间】:2018-07-25 00:41:31
【问题描述】:

我是 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!";
        }
    }
}

【问题讨论】:

  • 可能是因为您在开始时(即在输入所需值之前)而不是在点击处理程序中读取值。
  • 我不太确定我是否跟随。当您单击按钮时,它会读取已写入的文本以分配给仅具有 clickHandler 范围的 no1 和 no2 变量(如果有任何文本,但对于这种情况,我们假设已经有有效输入,因为它是在我按下按钮之前输入的)。所以当它执行 gcd 函数时,数字被处理并作为文本打印到标签上,不是吗?这就是为什么我相当肯定初始变量不是问题的原因。
  • 代码运行的时候TextInputs是空的吧?此时 no1 和 no2 被定义并被赋予一个空值。当您向 TextInput 键入内容时,它们不会更新,因为它们并没有以这种方式绑定在一起。正如 Organis 所说,您应该在点击处理程序中捕获值。

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


【解决方案1】:
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 函数需要它,因此您可以在单击时读取文本字段值并在同一个函数中定义它们。从而在需要时更新变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    相关资源
    最近更新 更多