2016-06-23 3 views
0

Привет, ребята, я пытаюсь создать метод извлечения для получения суммы моих значений массива 2d. Я построил массив для заполнения из пользовательского ввода, но не уверен, как суммировать все значения массива как Я еще учусь.общая сумма значений массива 2d C#

public int[,] ToysMade = new int[4, 5]; 
public String[] days = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" }; 

    public void UserInput() 
    { 
     String value; 
     int numCount; 


     //retrieveing length of ToysMade array dimensions if less than 0 repeat untill last dimension filled 
     for (int i = 0; i < ToysMade.GetLength(0); i++) 
     { 
      for (int ii = 0; ii < ToysMade.GetLength(1); ii++) 
      { 
       //taking user input for array dimension 0 "first dimension" then increment it by 1 after input ready for next dimension "i + 1" 
       value = Microsoft.VisualBasic.Interaction.InputBox("Enter Value For " + days[ii] + " of week " + (i + 1).ToString() + " Enter Value"); 

       try 
       { 
        //making sure for only int past through 
        while (!(int.TryParse(value, out numCount))) 
        { 
         MessageBox.Show("Not a valid number, please try again."); 
         value = Microsoft.VisualBasic.Interaction.InputBox("Enter Value for " + days[i] + " of week " + (i + 1).ToString() + " Enter Value"); 
        } 
        // taking values enterd from user and set next dimension for next input by incrementing it 
        ToysMade[i, ii] = numCount; 

       } 
       catch (Exception e) 
       { 
        MessageBox.Show("Value enterd is not in a valid format"); 
       } 
      } 
     } 
    } 
+0

это обыкновение решить вашу проблему, но с вложенными циклами является вполне нормальным для использования I и J для индексов. как для суммирования. Просто используйте использование вложенного цикла и читайте, как вы их написали, добавляя значение в каждый элемент к переменной суммы. – Jacobr365

+0

Хорошо, здорово, попробуй дать ему назад спасибо Jacobr365 – Ronzkie

ответ

1

Я предлагаю ставить либо простые Еогеасп петля

int total = 0; 

    foreach (var item in ToysMade) 
    total += item; 

или вложенные циклы, которые типичны для 2d массивов

int total = 0; 

    for (int i = 0; i < ToysMade.GetLength(0); i++) 
    for (int j = 0; j < ToysMade.GetLength(1); j++) 
     total += ToysMade[i, j]; 
+0

awesome ill try that thanks heaps Dmitry – Ronzkie

0

Вы можете использовать Linq путем создания IEnumerable<int> из ToysMade;

var total = ToysMade.Cast<int>().Sum(); 
0

спасибо ребята удивительные работы благодаря куч снова

public void Sum() 
    { 
     int total = 0; 

     for(int i = 0;i < ToysMade.GetLength(0); i++) 
     { 
      for(int j = 0;j < ToysMade.GetLength(1); j++) 
      { 
       total += ToysMade[i, j]; 
      } 
     } 
     txtOutput.Text += "\r\nThe sum of products is: " + total.ToString(); 
    }