【问题标题】:Doing math with elements of a 2d-array?用二维数组的元素做数学?
【发布时间】:2016-04-28 17:54:06
【问题描述】:

所以我正在制作这样的二维数组:

var kcalVerdier:Array = new Array(92,80,103,36,53);
var alleNumSteppers:Array = new    Array(alleNumSteps.numStepMelk.value,alleNumSteps.numStepEgg.value,alleNumSteps.numStepBrød.value,alleNumSteps.numStepSmør.value,alleNumSteps.numStepOst.value);
var c:Array = new Array(kcalVerdier,alleNumSteppers);
function endreAntall(evt:Event)
{


        txtTotalKcal.text = String(c[0] * [0]);




}

难道不能将二维数组的 2 个值相乘吗?我收到此错误:

场景 1,“脚本”层,第 1 帧,第 17 行,第 38 列 1067:将 Array 类型的值隐式强制转换为不相关的 Number 类型。

我不明白为什么,c[0][0] 应该都是整数值还是我误解了?

【问题讨论】:

  • 但是你没有创建一个二维数组,c 是一个包含kcalVerdieralleNumSteppers 的所有值的数组。
  • 都是数组,所以c是数组数​​组。
  • 所以它是一个二维数组?

标签: arrays actionscript-3 multidimensional-array


【解决方案1】:

您实际上想要乘以哪些值? 通过这样做:

c[0] * [0]

您正在尝试将 Array 与 Array 相乘。

c[0] 将是 c 数组的第一个元素,实际上是 kcalVerdier 数组。 [0] 正在用一个元素(即 0)创建新数组;

所以它就像 [92,80,103,36,53] * [0]


[编辑]

好的,试试这段代码:

// Check if both Arrays are what we want:
trace("kcalVerdier => " + c[0]);
trace("alleNumSteppers => " + c[0]);
trace();

// Gett Arrays lengths
var arr1Length:int = c[0].length;
var arr2Length:int = c[1].length;

// Check if both are the same length
if(arr1Length == arr2Length)
{
    // Let's iterate
    for(var i:int = 0; i<arr1Length; i++)
    {
        trace( c[0][i] * c[1][i] );
    }
}

【讨论】:

  • 哦,我明白了...理想情况下,我想将 kcalVerdier 中的每个值与正确的数字步进器相乘,因此 KcalVerdier 中的 [0] * alleNumSteppers 中的 [0] 和 [1 ] * [1]等等。但是在我发布的内容中,我试图仅将 92 * alleNumSteps.numStepMelk.value 相乘,我想我真正想要的方法是在函数内使用双 for 循环,还是?
  • 好的,也许试试:for(i:int = 0; ii<c[0].length 而不是 i&lt;c[0][0].length
  • 是的,我试过了,但没有成功,我试图找出原因,但不明白。
  • 我也不能像你一样在 for 循环中声明变量我得到一个带有冒号的语法错误。但是当我在外面声明它并将i = 0; 留在里面时它会起作用。我不知道我是否遗漏了什么,但无论我的数字步进器有什么值,它在跟踪它时只输出五个零。
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多