class Program
{
static void Main(string[] args)
{
string[] deck = {"1♥","2♥","3♥","4♥","5♥","6♥","7♥","8♥","9♥","10♥","11♥","12♥","13♥",
"1♦","2♦","3♦","4♦","5♦","6♦","7♦","8♦","9♦","10♦","11♦","12♦","13♦",
"1♣","2♣","3♣","4♣","5♣","6♣","7♣","8♣","9♣","10♣","11♣","12♣","13♣",
"1♠","2♠","3♠","4♠","5♠","6♠","7♠","8♠","9♠","10♠","11♠","12♠","13♠"};
string[] player = new string[26];
string[] computer = new string[26];
deck = Shuffle(deck);
foreach (string d in deck)
{
Console.WriteLine(d);
}
Console.WriteLine(deck.Length);
for (int i = 0; i < 26; i++)
{
player[i] = deck[i];
Console.WriteLine(player[i]);
}
for (int j = 26; j < 52; j++)
{
computer[j] = deck[j];
Console.WriteLine(computer[j]);
}
}
static string[] Shuffle(string[] deck)
{
Random r = new Random();
for (int i = deck.Length; i > 0; i--)
{
int j = r.Next(i);
string k = deck[j];
deck[j] = deck[i - 1];
deck[i - 1] = k;
}
return deck;
}
}
所以我試着做的是一副撲克牌。然後我所做的就是使用Shuffle方法來洗牌數組並改變牌組數組。爲什麼這個數組越界了?
它會將一半的甲板陣列分配給玩家和電腦(玩家獲得前半部電腦後半部分)。現在這首先洗牌,看起來似乎公平。
所以我得到一個出界失誤的線是這一行:
computer[j] = deck[j];
更改爲'電腦[J-26] =甲板[J]' –
電腦的大小爲26,但因爲數組基於0,從0到25;計算機[j]從26到51,這超出了計算機的範圍。 –
另外,這裏的錯誤很明顯。這是超越界限。所以,只要你遇到這樣的錯誤,你應該在那裏貼一個斷點,跟蹤你的循環,並檢查索引是你認爲他們應該是什麼。 –