Javascript 为什么我的循环只看到第一个数组元素的值? 函数处理() { var-suffledDeck:数组; var扑克牌:阵列; var-playerTwoCards:数组; var-first:int=0; 第二个变量:int=1; suffledDeck=新数组(); PlayerCards=新阵列(); playerTwoCards=新数组(); //var CardLeft:int=甲板长度; 对于(变量i=0;i
我认为问题在于Javascript 为什么我的循环只看到第一个数组元素的值? 函数处理() { var-suffledDeck:数组; var扑克牌:阵列; var-playerTwoCards:数组; var-first:int=0; 第二个变量:int=1; suffledDeck=新数组(); PlayerCards=新阵列(); playerTwoCards=新数组(); //var CardLeft:int=甲板长度; 对于(变量i=0;i,javascript,.net,arrays,Javascript,.net,Arrays,我认为问题在于var ranNum=Random.Range(1,Deck.length) ranNum应该在0到Deck.length-1之间生成一个随机索引,因为数组索引从0开始(不是1)。这些日志记录语句存在问题: function Deal() { var suffledDeck:Array; var playerOneCards: Array; var playerTwoCards: Array; var first:int =0; var second:int = 1; su
var ranNum=Random.Range(1,Deck.length)
ranNum
应该在0到Deck.length-1之间生成一个随机索引,因为数组索引从0开始(不是1)。这些日志记录语句存在问题:
function Deal()
{
var suffledDeck:Array;
var playerOneCards: Array;
var playerTwoCards: Array;
var first:int =0;
var second:int = 1;
suffledDeck = new Array();
playerOneCards = new Array();
playerTwoCards = new Array();
//var CardLeft:int = Deck.length;
for(var i = 0; i < Deck.length; i++)
{
Debug.Log(Deck.length);
var ranNum = Random.Range(1,Deck.length);
suffledDeck.Add(Deck[ranNum]);
Debug.Log("suffled deck: " + suffledDeck.length);
}
//var halfDeck: int = (suffledDeck.length / 2);
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
first += 2;
second += 2;
}
}
first
和second
是suffledDeck
的有效索引,但是每个玩家的牌组只有一半的牌。尝试在两个日志语句中使用j
作为下标,而不是first
或second
您还应该将循环限制为j<26
,而不是j,因为:
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
此处second
为us 1赋值,而数组中只包含一个为零的项。导致ArgumentoutofRangeException
因此,请尝试:
Debug.Log(playerTwoCards[second].img);
用于(var j=0;j但是数组从0开始,这意味着当我点击第26个元素时,它会end@JoshBanks-您的循环当前尝试处理27个元素:索引值0、1、2、…、26。您希望最后一次迭代是针对j==25
,而不是j==26
。我现在觉得很傻,我之前也做了同样的事情,谢谢您的帮助。我的乐意效劳:)请帮我一个忙。请单击绿色勾号和答案,接受您所有问题的正确答案。这鼓励用户帮助您。Unity标签是针对Microsoft Unity的。请不要滥用它。
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[j].img);
Debug.Log(playerTwoCards[j].img);
first += 2;
second += 2;
}