2014-02-14 24 views
2

陣列比方說,我知道有多少數字將用戶投入。我有一個int數組,我想用整數用戶放在由特定的字符devided,例如空間來填補它。我設法解決這個問題。如何填寫整數從控制檯輸入

int[] numbers = new int[5]; 
string[] input = Console.ReadLine().Split(' '); 
for (int i = 0; i < numbers.Length; ++i) 
    numbers[i] = int.Parse(input[i]); 

我想問你,有沒有其他更好的方法來做到這一點?

+0

這只是功課?因爲沒有任何實際的原因爲您嘗試,沒有某種錯誤陷阱。 –

+0

它只是爲了改進算法思維。當然在真正的程序中,我會檢查是否有任何錯誤。 – user3311244

回答

1

你可以使用Linq:

var numbers = Console.ReadLine().Split(' ').Select(token => int.Parse(token)); 

// if you must have it as an array... 
int[] arr = numbers.ToArray(); 

這基本上做同樣的事情,你的代碼,它只是更加簡潔。

您還可以通過處理用戶輸入非數字內容(這會導致int.Parse()引發異常)的情況來使代碼更健壯。

-1

您可以使用StringTokenizer標記整行,然後使用parseInt()。

0

建議1:,如果你想閱讀由space劃定單行所有的值,那麼我建議你使用command line arguments。這樣您就可以避免在程序中使用String數組,因爲命令行參數存儲在Main()方法String數組參數中。

建議2:在將值解析爲Int時很好,因爲如果解析失敗(由於無效整數),那麼我們可以存儲零或一些默認值。

Int32.TryParse()讓你,讓你知道羯羊解析是sucessfull與否。

試試這個:

static void Main(string[] args) 
    { 
    int[] numbers = new int[args.Length]; 
    int temp; 
    for(int i=0;i<args.Length;i++) 
    { 
     if (Int32.TryParse(args[i],out temp)) 
     { 
      numbers[i] = temp; 
     } 
     else 
     { 
      numbers[i] = 0; 
     } 
    } 
    } 
0

讓我試試,只是空間讀取控制檯線和分裂。使用ConvertAll方法返回Array類。

int[] myArray = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);