2015-05-16 2 views
0

Скажите, что пользователь вводит строку «1 2 3 4», как мне назначить ее массиву так, чтобы при значении array[0] было 1, array[1] равно 2 и так далее? Пока мне удалось присвоить значения, когда пользователь нажимает вводить после каждого значения, но не тогда, когда значения находятся в строке, чего я хочу достичь.Как взять пользовательский ввод и назначить массив

double[,] array = new double[4,4]; 

Console.Write("Enter 16 digits: "); 
for (int i = 0; i < 4; i++) 
{ 
    for (int j = 0; j < 4; j++) 
    { 
     array[i, j] = Convert.ToDouble(Console.ReadLine()); 
    } 
} 
+0

пытались ли вы 'split'? – kaybee99

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Вы должны добавить что-то вроде

var line = Console.ReadLine(); 
var lineArray = line.Split(new Char[]{' '}); 

Это даст вам множество отдельных строк элементов элементов звуковой колонки, с «1» на [0], и т.д. Если вы затем хотите преобразовать что массив удваивается, вы можете сделать

var arrayOfDouble = lineArray.ToList().ConvertAll(x => Double.Parse(x)).ToArray(); 

Вот объяснение:

  1. Разделенный метод. Это метод, доступный для объектов String. Он принимает строку символов (у меня просто был массив одного элемента «,») и разбивает предоставленную строку на вхождения этих символов. Он возвращает массив разделенных элементов.

  2. Call to ConvertAll.

    • Это берет функцию, в данном случае, указанном на лету в лямбда нотации (т.е. х => Double.Parse (х) бит), что позволяет задающее функцию прямо тогда и там по мере необходимости , Функция налагает значение x, и пытается проанализировать это значение как Double. Так как x происходит из массива строк, тип x - String. Вызов . Парс пытается получить Double Out из переданной строки x.
    • Поскольку ConvertAll() доступен в объекте List, я сначала преобразовываю массив в список через ToList(). Lambda получает вызов для каждого элемента списка, поэтому каждая строка в исходном элементе lineArray будет передана в Double.Parse для преобразования в double. Появится новый список Double.
    • В конце я делаю результирующий список удвоений обратно в массив через ToArray().
2

Вы должны разделить строку первой:

string[] line = Console.ReadLine().Split(' '); 

то его тривиальным

for (int i = 0; i < 4; i++) 
{ 
    for (int j = 0; j < 4; j++) 
    { 
     array[i, j] = double.Parse(line[i * 4 + j]; 
    } 
}