2013-08-02 2 views
1

Я выяснил, как сделать большую часть того, что мне нужно. Я понимаю, что переменные, используемые в течение петель не будет доступен вне цикла, но мне нужно отобразить сумму целых чисел пользователь помещает в Так,Вычисление суммы для массива вне * newb *

шаг 1:. просит пользователя для ввода число целых чисел.

Шаг 2: Выполняется через получение каждого целого числа.

Шаг 3: Затем отображает все входные данные.

И шаг 4: должен иметь сумму 3 шага ... и это

где мой вопрос.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Dynamic_Entry 
{ 
    class Program 
    { 
     static void Main() 
     { 
      Console.Write("How many integers are in your list? "); 
      int k = Convert.ToInt32(Console.ReadLine()); 
      int[] a = new int[k]; 
      int sum = 0; 

      for (int i = 0; i < a.Length; i++) 
      { 
       Console.Write("Please enter an integer: "); 
       a[i] = Convert.ToInt32(Console.ReadLine()); 
      } 
      for (int n = 0; n < a.Length; n++) 
      { 
       Console.WriteLine("{0, 5}", a[n]); 
      } 
      Console.WriteLine("-----"); 

      sum += [] a; 
      Console.Write("{0, 5}", sum); 
      Console.ReadLine(); 
     } 
    } 
} 

Любая помощь в том, как получить сумму из-за пределов цикла? Если я поместил линию дефиса в последний цикл, он будет продолжать ставить строки после каждого номера ... Мне нужна только строка в конце, с суммой под ней. Благодаря!

+0

поставить дополнение к сумме в для цикла – ne2dmar

+0

Вы можете объявить 'Int sum = 0; 'вверху, затем' sum + = a [i]; ', как вы их читаете. – rutter

+0

Я не могу добавить дополнение в цикл, потому что тогда он делает вывод неправильным. Окончательная сумма отображается после строки дефиса, которая находится вне цикла. Если линия дефиса находилась внутри цикла, я бы получил строку после ввода целого числа. – user1707042

ответ

3

Так как вы можете использовали LINQ, заменить сумму с сильфоном

Console.WriteLine("-----"); 
    sum = a.Sum(); 
Console.Write("{0, 5}", sum); 
+0

Это ТОЧНО, что мне нужно. Можете ли вы объяснить, как массив все еще сохраняет значение массива, когда он находится в разных циклах? – user1707042

+0

Тот же ответ, который я дал перед этим ответом. –

+0

U просто повторяют массив, не изменяя значение массива. Вот почему сохраняются одни и те же значения. Очень здравый смысл –

2

Вы можете использовать

a.Sum() 

метод Linq.

И ваш код должен выглядеть так

static void Main() 
     { 
      Console.Write("How many integers are in your list? "); 
      int k = Convert.ToInt32(Console.ReadLine()); 
      int[] a = new int[k]; 
      int sum = 0; 

      for (int i = 0; i < a.Length; i++) 
      { 
       Console.Write("Please enter an integer: "); 
       a[i] = Convert.ToInt32(Console.ReadLine()); 
      } 
      for (int n = 0; n < a.Length; n++) 
      { 
       Console.WriteLine("{0, 5}", a[n]); 
      } 
      Console.WriteLine("-----"); 

      Console.Write("{0, 5}", a.Sum()); 
      Console.ReadLine(); 
     } 
+0

У меня нет опции Apply.Sum в моей Visual Studio. Это консольное приложение, кстати. – user1707042

+0

Я не говорил вам использовать Apply.Sum(). Я сказал U использовать Array.Sum(). Ваш ответ был получен после моего ответа. В чем проблема с моим ответом. Кажется, что-то не так –

+0

У меня не было Array.Sum, простая орфографическая ошибка. Другими словами, когда я пробовал ваш код, это не сработало. Когда я попробовал Харриса, это было так. Никаких жестких чувств. – user1707042

Смежные вопросы