索引超出了数组的范围(C#)
我在这一行得到“索引超出数组的范围”,这有什么不对?
Kort[x, y] = Sort[x] + Valor[y] + " ";
以下是完整的代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace uppgift_13 { public partial class Form1 : Form { string[,] Kort = new string[4,13]; string[] Valor = new string[13]; string[] Sort = new string[4]; int x, y; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Valor[1] = "2"; Valor[2] = "3"; Valor[3] = "4"; Valor[4] = "5"; Valor[5] = "6"; Valor[6] = "7"; Valor[7] = "8"; Valor[8] = "9"; Valor[9] = "10"; Valor[10] = "Knekt"; Valor[11] = "Dam"; Valor[12] = "Kung"; Valor[13] = "Ess"; Sort[1] = "H"; Sort[2] = "R"; Sort[3] = "S"; Sort[4] = "K"; } private void LaddaKort() { for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) { Kort[x, y] = Sort[x] + Valor[y] + " "; } } } private void SkrivKort() { for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) { richTextBox1.AppendText(Kort[x, y]); } } } private void button1_Click(object sender, EventArgs e) { LaddaKort(); SkrivKort(); } } }
从0开始数组访问,而不是1
所以,改为:
private void Form1_Load(object sender, EventArgs e) { Valor[0] = "2"; Valor[1] = "3"; Valor[2] = "4"; Valor[3] = "5"; Valor[4] = "6"; Valor[5] = "7"; Valor[6] = "8"; Valor[7] = "9"; Valor[8] = "10"; Valor[9] = "Knekt"; Valor[10] = "Dam"; Valor[11] = "Kung"; Valor[12] = "Ess"; Sort[0] = "H"; Sort[1] = "R"; Sort[2] = "S"; Sort[3] = "K"; }
此外,启动任何循环为0而不是1.并使条件小于长度,直到相等。 更像:
for (int i=0; i < theArray.Length; i++)
在C#数组中是从零开始的……
看看Kevek回答你的问题:
这个:
for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) ...
应该:
for (this.x = 0; this.x < 4; this.x++) { for (this.y = 0; this.y < 13; this.y++) ...
Sort是一个数组0..3,Valor是0..12。 所以你不能使用Sort [4]和Valor [13]。