2d数组,以奇怪的模式添加它的值

本文关键字:模式 添加 数组 2d | 更新日期: 2023-09-27 18:05:37

我几个月前开始学习c#和编程,遇到了一些问题。这里的想法是我们创建一个二维数组(用户添加行/列的数量),数字需要在1到10之间。

然后,当数组创建时,数字序列(3-5-7-9-11等)从第一列开始,并在最后一列结束。列中的其余数字由用户通过键盘从第一行开始添加(忽略第1列和最后一列,因为我们添加了它们)。

问题是:

  • 检查行/列数是否在1到10之间的最佳方法是什么?(我在想IF-else,但没有更好的方法吗?)
  • 如何使数字序列3-5-7等在第一列开始并在最后一列结束?是啊,我觉得很失落。

我现在在哪里:

        Console.WriteLine("Add row value of 1-10");
        string s1
        s1 = Console.ReadLine();
        int k = int.Parse(s1);
        Console.WriteLine("Add column value of 1-10");
        string s2;
        s2 = Console.ReadLine();
        int p = int.Parse(s2);
        int[,] M = new int[k, p];

示例:我们添加了k(row) &P (couln)值为4。那么这个数组应该是这样的:

3 x x 11

5 x x 13

7 x x 15

9 x x 17

然后在不覆盖现有数字的情况下手动添加X,数字的值无关紧要

2d数组,以奇怪的模式添加它的值

所以…如果我说对了你想问用户动态二维数组的"长度和宽度"吗?要检查输入的数字是否在1到10之间,只有一个方法:

int [,] M;
if (k >= 1 && k <= 10 && p >= 1 && p <= 10)
{
    M = new int[k,p];
}

如果用户在那里输入字符而不是数字,则更好的是使用int.TryParse(),否则您可以轻松获得Exception

填充数字:

int num = 3;
for (int i = 0; i < k; ++i)
{
    M[i,0] = num;
    num+=2;
}
for (int i = 0; i < k; ++i)
{
    M[i,p] = num;
    num+=2;
}

将每行的第一列和最后一列的数字相加。之后,手动填写其他单元格,您检查每个单元格,如果它不是在第一列或最后一列。我希望我理解对了。所提供的代码可能会被简化,但以这样的方式提供是为了更好地理解。

if(k>0 && k<11 && p>0 && p<11)
{
 int i;
 int M[,] = new int[k,p];
 for (i=0;i<k;i++)
 {
  M[i,0]=i*2+3;
  M[i,p-1]=(i+k)*2+3;
 }
}