【发布时间】: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