#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 массива.