【问题标题】:how do i make my 2 dimensional array to work我如何使我的二维数组工作
【发布时间】:2022-08-02 16:49:02
【问题描述】:

我在做一个乐透数组游戏,我想在数组中写入 10 个不同的数字,看看我是否得到宾果游戏。我希望它是二维的,并且我的大部分代码都是正确的(我已经在 1D 中尝试过),但是就像我将它更改为 2D 一样,我遇到了数组(数组 [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)
         {
             Console.WriteLine(\"skriv in nummer\");
             //2D array
             int[,] array = new int[2, 5];

             for (int i = 0; i < array.GetLength (0); i++)
             {
                 //print in numbers
                 Console.WriteLine(\"skriv in lottoboll nummer\" + \" \" + i + \":\");
                 array[i] = int.Parse(Console.ReadLine()); //this is one problem i have 
 (the array[i])

             }

             Random rand = new Random();
             int randNum = rand.Next(1, 20);

             for (int j = 0; j < array.GetLength (0); j++)
             {
                 if (array[i] == 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($\"boll nummer\" + \" \" + randNum + \" \" + \"gav bingo\");
             Console.WriteLine(\"slut på spelet.\");

         }

     }

 }    
  • 二维数组需要用 2 个值索引

标签: c#


【解决方案1】:

二维数组的重点在于它有两个维度。要访问一个元素,您必须在每个维度中指定索引。这意味着您也不能使用单个 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.
    }
}

您还需要确保在什么是“行”和什么是“列”方面保持一致,因为它们在二维数组中并不明确。

【讨论】:

    【解决方案2】:

    使用二维数组,您需要两个不同的值来索引它。如果您仅使用 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(...));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      相关资源
      最近更新 更多