2012-08-06 116 views
0

我試圖寫一個程序,從控制檯讀取一個正整數N(N < 20),並打印像這些的矩陣:讀整數輸入並打印矩陣

N = 3 
1 2 3 
2 3 4 
3 4 5 

N = 5 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 

這是我的代碼:

using System; 
namespace _6._12.Matrix 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Console.WriteLine("Please enter N (N < 20): "); 
      int N = int.Parse(Console.ReadLine()); 
      int row; 
      int col; 
      for (row = 1; row <= N; row++) 
      { 
       for (col = row; col <= row + N - 1;) 
       { 
        Console.Write(col + " "); 
        col++; 
       } 
       Console.WriteLine(row); 
      } 
      Console.WriteLine(); 
     } 
    } 
} 

問題是控制檯打印一個額外的列,數字從1到N,我不知道如何擺脫它。我有一個想法,爲什麼這可能會發生,但仍然無法找到解決方案。

+0

首先檢查ñ<20或者是否會再次要求用戶把一個數<20 – 2012-08-06 06:14:03

回答

4

簡單,對於Console.WriteLine();

變化Console.WriteLine(row);,而你在它;

static void Main() 
    { 
     int N; 

     do 
     { 
      Console.Write("Please enter N (N >= 20 || N <= 0): "); 
     } 
     while (!int.TryParse(Console.ReadLine(), out N) || N >= 20 || N <= 0); 

     for (int row = 1; row <= N; row++) 
     { 
      for (int col = row; col <= row + N - 1;) 
      { 

       Console.Write(col + " "); 
       col++; 
      } 
      Console.WriteLine(); 
     } 

     Console.Read(); 
    } 

Please enter N (N >= 20 || N <= 0): 5 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 
+0

奧基。額外的列消失了,但現在是一個數字:N + 1出現在第一列不需要的地方。 – 2012-08-06 06:31:22

+1

@AngelElenkov,你能告訴我在哪裏? – Fredou 2012-08-06 06:39:04

1

只是此行Console.WriteLine(row);改變這種Console.WriteLine(); 這裏的問題是;在每個內部循環的末尾,您正在再次寫入行值;這是不需要的。

0

第一個問題是你認爲Console.WriteLine(row)在做什麼?當你正在學習編程時,要「看」代碼在做什麼以及爲什麼要這樣做,而不是運行它,調整它,然後再次運行,看看它是否按照你想要的方式行事至。一旦你清楚而明瞭地看到代碼在做什麼,你會注意到Console.WriteLine(行)是不正確的,你只需要在那一刻寫一個換行符。

0

下面是使用if語句而不是使用do while另一種方法,代碼看起來有點簡單:

static void Main(string[] args) 
{ 
    Console.Write("Give a number from 1 to 20: "); 
    int n = int.Parse(Console.ReadLine()); 
    int row,col; 
    Console.WriteLine(""); 
    if (n > 0 && n < 21) 
    { 
     for (row = 1; row <= n; row++) 
     { 
      for (col = row; col <= row + n - 1;col++) 
      { 
       Console.Write(col + " "); 
      } 

      Console.WriteLine(); 
     } 
    } 
    else 
    { 
     Console.WriteLine("This number is greater than 20 or smaller than 1"); 
    } 
}