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,数字的值无关紧要
所以…如果我说对了你想问用户动态二维数组的"长度和宽度"吗?要检查输入的数字是否在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;
}
}