2013-10-23 65 views
-2

如何在C#的輸入?並在該輸入上使用循環。如何在C#中輸入

這裏是我的代碼,到目前爲止,我試圖

static void Main(string[] args) 
{ 

      int[] ar = new int[10002]; 
      int n = Convert.ToInt32(Console.ReadLine()); 

      for(int i = 0;i < n; i++) 
      { 
       ar[i] = Convert.ToInt32(Console.ReadLine()); 
      } 

      for (int i = 0; i < n; i++) 
      { 
       Console.WriteLine(ar[i]); 
      } 
      Console.ReadKey(); 

    } 
+3

什麼不工作這麼遠? –

+0

它顯示錯誤消息,如「輸入字符串格式不正確」。 –

+3

你必須給一個整數作爲輸入。這就是錯誤顯示的原因。你可能在給一個包含非數字字符的字符串。 –

回答

2

這裏是處理無效輸入你的情況兩個方面一個簡單的例子。你可以做的一件事就是給用戶提供一個輸入信息不正確的信息。第二種可能性是將無效輸入視爲null值。

這只是一個簡單的例子 - 通常你不應該失敗默默(這裏返回null,而不是抱怨),你不應該使用null值作爲一個特殊的函數返回值的指標。也是一個很好的例子是沒有完成計劃,但使用循環反覆詢問用戶,直到他們學會了許多的模樣;)

這些所有問題都得不到解決,作爲讀者的做法;)

static int? ReadInteger() 
{ 
    int result; 

    if (!int.TryParse(Console.ReadLine(), out result)) 
    { 
     return null; 
    } 

    return result; 
} 

static void Main(string[] args) 
{ 
    int?[] ar = new int?[10002]; 
    int? n = ReadInteger(); 

    if (!n.HasValue) 
    { 
     Console.WriteLine("Please input a correct integer"); 
     return; 
    } 

    for(int i = 0;i < n.Value; i++) 
    { 
     ar[i] = ReadInteger(); 
    } 

    for (int i = 0; i < n.Value; i++) 
    { 
     Console.WriteLine(ar[i].HasValue 
      ? ar[i].Value.ToString() : "Incorrect input"); 
    } 

    Console.ReadKey(); 
} 
+2

int?[]?真?也許是在這種情況下,合法的,但表情讓我感覺不舒服:) –

+0

記住,它是一個新來者:) – BartoszKP

+1

我沒有記住這一點,這就是爲什麼你有一個給予好評個簡單的例子,儘管噁心: ) –

0

我試圖建立這樣儘可能接近您的實現。來自BartoszKP的其他答案應該用在完整的場景中。

static void Main(string[] args) 
    { 
     int[] ar = new int[10002]; 
     int n; 
     if (int.TryParse(Console.ReadLine(), out n)) 
     { 
      int nr; 
      for (int i = 0; i < n; i++) 
      {     
       if (int.TryParse(Console.ReadLine(), out nr)) 
       { 
        ar[i] = nr; 
       } 
      } 

      for (int i = 0; i < n; i++) 
      { 
       Console.WriteLine(ar[i]); 
      } 
     } 
     Console.ReadKey(); 
    } 
+0

你的代碼不採取輸入(好方法)。就像爲n = 3,那麼它應該採取三項號碼1 2 3這樣的,但你的代碼採用三個輸入新行明智的,所以我認爲這是問題 –

+0

我不明白你在說什麼。代碼做它應該做的。如果你說它在最後讀到另一行,那是因爲Console.ReadKey(),你可能在執行結束時停止控制檯的關閉。 –