0

我正在尝试了解数组的工作原理,并且遇到了一个我正在解决的问题。任何帮助将不胜感激。

我不断收到以下三个错误:

1176:具有静态类型 flash.events:MouseEvent 的值与可能不相关的 int 类型的值之间的比较。

1067:将具有静态类型 flash.events:MouseEvent 的值隐式强制转换为不相关的类型 Number。

1176:具有静态类型 flash.events:MouseEvent 的值与可能不相关的 int 类型的值之间的比较。

var P1Numbers:Array = new Array();
var e:int=0;

function P1LowestScore(e:MouseEvent){
var P1Lowest:Number=P1Numbers[0];

for(e==1; e<P1Numbers.length; e++){
    if(P1Numbers[e]>P1Lowest){
        P1Lowest=P1Numbers[e];
    }else{
        lblPlayer1Lowest.text="ERROR!";
    }
}
lblPlayer1Lowest.text="Your lowest score is "+P1Lowest+".";

}

4

1 回答 1

0

好吧,您的问题是您首先将变量e定义为 int,但您的函数 P1LowestScore 还有一个 MouseEvent 类型的参数变量e。此变量会隐藏函数中的 int e 实例变量。因此,您将 MouseEvent 与 P1Numbers 数组的长度进行比较,该数组是一个 int。

我看到的另一个问题是你的 for 循环。您使用的是布尔表达式 (e==1) 而不是赋值表达式 (e=1)。

我不确定 P1LowestScore 如果在您的代码中调用如何,但我猜它是通过鼠标侦听器?

无论如何,只需将您的 int e 变量更改为其他名称(基本上是任何名称),您的错误就会消失。实际上,您最好在 for 循环声明中声明变量,因为您不在循环外使用它。像这样:

for(i:int = 1; i<P1Numbers.length; i++){
    //your code
}
于 2012-11-19T17:19:43.727 回答