如何读取和写入二维数组的数据



我正在制作一个乐透数组游戏,我应该在数组中写入10个不同的数字,看看我是否得到宾果。我希望它是二维的,我已经完成了大部分代码(我在1D中尝试过(,但就在我将其更改为2D时,我遇到了数组(array[I](的问题,我不知道为什么。

这是代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace kents.lottospel
{
class Program
{
static void Main(string[] args)
{
Random rand = new Random();
int randNum = rand.Next(1, 20);
Console.WriteLine("skriv in nummer");

for(var i= 0; i < 2; i++)
{
for(var j= 0; j < 5; j++)
{
array[i, j] = int.Parse(Console.ReadLine());
if (array[i, j] == randNum) //and this is also 
one problem (array[i])
{
Console.WriteLine($"Bing!nDet rätta talet 
var" + " " + randNum);
break;
}
else
{
Console.WriteLine($"tyvärr men du har inte 
fått nån bingo denna gången");
}
}
}
Console.WriteLine("skriv in lottoboll nummer" + " 
" + i + ":");


Console.WriteLine($"boll nummer" + " " + randNum + " " 
+ "gav bingo");
Console.WriteLine("slut på spelet.");
}
}
}

对于二维数组,您需要两个不同的值来对其进行索引。例如,如果您只为2D锯齿状数组的索引指定一个值,则结果将是另一个数组,而不是一个整数值:

//This will be an int[]
var subArray = array[0]
//This will be an int
var element = array[0][0]

当您从控制台读取输入值时,您只为数组指定一个索引值,因此表达式可以归结为以下内容:

int[] array = new array[5];
array = 42; //compiler error

要填充二维阵列,需要将循环更改为嵌套循环。外循环将在第一维度上迭代,内循环将在第二维度上迭代:

for(var i = 0; i < 2; i++)
{
for(var j = 0; j < 5; j++)
{
array[i,j] = int.Parse(Console.ReadLine(...));
}
}

2D数组的全部意义在于它有两个维度。若要访问元素,必须在每个维度中指定索引。这意味着您也不能使用单个for循环来遍历它。通常使用两个嵌套的for循环,例如

for (var i = 0; i <= myArray.GetUpperBound(0); i++)
{
for (var j = 0; j <= myArray.GetUpperBound(1); j++)
{
// Use myArray[i, j] here.
}
}

这也取决于你是否确保你对什么是";行";什么是";列";,因为它们在2D阵列中不是明确的。

为了更明确一点,这里有一个在2D数组中设置每个元素,然后获得每个元素的例子:

var myArray = new long[10, 10];
for (var i = 0; i <= myArray.GetUpperBound(0); i++)
{
for (var j = 0; j <= myArray.GetUpperBound(1); j++)
{
myArray[i, j] = DateTime.Now.Ticks;
}
}
for (var i = 0; i <= myArray.GetUpperBound(0); i++)
{
for (var j = 0; j <= myArray.GetUpperBound(1); j++)
{
Console.WriteLine("({0},{1}): {2}", i, j, myArray[i, j]);
}
}

最新更新