I get "Index was outside the bounds of the array" on this line, what's wrong?
我得到"索引超出数组的界限"在这条线上,怎么了?
Kort[x, y] = Sort[x] + Valor[y] + " ";
Below is the complete code:
以下是完整的代码:
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();
}
}
}
3 个解决方案
#1
6
Start your array accesses from 0, and not 1
从0开始数组访问,而不是1。
So, change to this:
所以,改变:
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";
}
Also, start any of your loops at 0, instead of 1. And make the conditional be less than the length, not until equal. More like:
同样,在0处开始任何一个循环,而不是1。使条件小于长度,直到相等。更像:
for (int i=0; i < theArray.Length; i++)
#2
2
in C# arrays are zero-based...
在c#数组中是从零开始的…
look at what Kevek answered you plus:
看看凯文是怎么回答你的:
this:
这样的:
for (this.x = 1; this.x <= 4; this.x++)
{
for (this.y = 1; this.y <= 13; this.y++)
...
should be:
应该是:
for (this.x = 0; this.x < 4; this.x++)
{
for (this.y = 0; this.y < 13; this.y++)
...
#3
1
Sort is an array 0..3, and Valor is 0..12. So you cannot use Sort[4] and Valor[13].
排序是一个数组0。3,和Valor是0。因此不能使用Sort[4]和Valor[13]。
#1
6
Start your array accesses from 0, and not 1
从0开始数组访问,而不是1。
So, change to this:
所以,改变:
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";
}
Also, start any of your loops at 0, instead of 1. And make the conditional be less than the length, not until equal. More like:
同样,在0处开始任何一个循环,而不是1。使条件小于长度,直到相等。更像:
for (int i=0; i < theArray.Length; i++)
#2
2
in C# arrays are zero-based...
在c#数组中是从零开始的…
look at what Kevek answered you plus:
看看凯文是怎么回答你的:
this:
这样的:
for (this.x = 1; this.x <= 4; this.x++)
{
for (this.y = 1; this.y <= 13; this.y++)
...
should be:
应该是:
for (this.x = 0; this.x < 4; this.x++)
{
for (this.y = 0; this.y < 13; this.y++)
...
#3
1
Sort is an array 0..3, and Valor is 0..12. So you cannot use Sort[4] and Valor[13].
排序是一个数组0。3,和Valor是0。因此不能使用Sort[4]和Valor[13]。