簡體   English   中英

2D數組,以奇怪的模式添加它的值

[英]2d array,adding it values in a weird pattern

我幾個月前開始學習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(coulmn)的值相加為4,因此數組應類似於:

3 xx 11

5 xx 13

7 xx 15

9 xx 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;
}

這將在每行的第一列和最后一列中添加數字。 之后,要手動填充其他單元格,請檢查每個單元格,它們不在fir或最后一列中。 我希望我能正確理解你。 提供的代碼可以簡化,但是以更好地理解的方式提供。

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;
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM