Получите ввод от пользователя и создайте 2D массив

#c#

Вопрос:

Я хочу получить ввод от пользователя и создать 2D-массив так, как пользователь вводит значения в двух строках. Сначала пользователь определяет значения, разделенные пробелами, затем нажимает enter и выдает другие значения, также разделенные пробелами, как показано ниже на примере:

Дайте значения:

 2 3 4 5 6 7  

переменная должна иметь это в конце:

 [[2, 3, 4], [5, 6, 7]]  

Еще один пример:

Дайте значения:

 1 2 3 4  

переменная должна иметь это в конце:

 [[1, 2], [3, 4]]  

Ответ №1:

Я, честно говоря, не знаю, зачем тебе все так усложнять, но вот, пожалуйста:

 Console.Write("Please insert values separated by white-space: "); string userInputLine1 = Console.ReadLine(); Console.Write("Please insert values seperated by white-space again: "); string userInputLine2 = Console.ReadLine();  string[] userInputLine1Splitted = userInputLine1.Split(" "); string[] userInputLine2Splitted = userInputLine2.Split(" ");  // Either this or catch an out-of-boundary exception when one is larger than the other and fill the space with 0's or something else. if (userInputLine1Splitted.Length != userInputLine2Splitted.Length) {  throw new Exception("Both 1d arrays need to be the same length!"); }  int lengthOfArray = userInputLine1Splitted.Length;  // Since we always have only 2 rows this can be hardcoded. int[,] TwoDArrayFromUserInput = new int[2, lengthOfArray];   for (int col = 0; col lt; lengthOfArray; col  ) {  TwoDArrayFromUserInput[0, col] = Convert.ToInt32(userInputLine1Splitted[col]);  TwoDArrayFromUserInput[1, col] = Convert.ToInt32(userInputLine2Splitted[col]); }  // Print to console to prove it worked. for (int row = 0; row lt; 2; row  ) {  for (int col = 0; col lt; lengthOfArray; col  )  {  Console.Write(TwoDArrayFromUserInput[row, col]   " ");  }   Console.WriteLine(); }  

Если бы вы могли указать свой вариант использования, я почти уверен, что смог бы помочь вам найти лучшее решение.

Комментарии:

1. почему ты сказал, что это сложно? Задача состоит в том, чтобы взять массив 2D-десятицентовиков из консоли. Что в этом плохого?

2. Может быть, «сложный» было неправильным словом. Но в зависимости от варианта использования существуют гораздо лучшие альтернативы, чем использование 2 1D массивов в качестве своего рода буфера для создания 2D массива.